mysql 1005 - can't create table_关于创建数据表报错一例(ERROR 1005 Can’t create table (errno: 121))...
问题描述
曾遇到创建数据表报错问题,报错如下:
ERROR 1005 (HY000) at line 18: Can't create table 'db1.t2' (errno: 121)
通过日志查看有一条记录
InnoDB: Error: table `db1`.`t2` already exists in InnoDB internal
可见要创建的这个表已经存在,导致创建同名数据表报错,但是从数据库目录上查看确实没有这个表文件。
原因分析
事实上,导致这种情况是由于删除数据表时直接删除了源文件,而没有通过SQL命令来删除。这种错误的方法对MyISAM引擎的数据库有时候是管用的,但是对于InnoDB引擎的数据库则是一定不管用的。
因为对于InnoDB引擎的数据库,当创建一个表时,会在数据库目录中创建一个.frm格式(如t2.frm)的表结构文件,同时,内部地,InnoDB会为这个表向自己的数据目录添加一个条目。当把源文件(t2.frm)直接删除时,InnoDB内部数据目录中并没有删除对应的条目。
这时,你运行show tables,由于该命令是通过表结构文件检索的,自然查看不到这个表。
如果尝试重新导入数据,由于.sql文件中的语句写的是"drop table if exists 't2'",最终也会因查不到表而不去执行drop命令。
处理方法
1. 对于MyISAM引擎的数据库
如果之前删的表文件是空表文件,则可以直接create创建(这种情况不会出现上面的报错;如果之前删的是有数据的表文件,则直接创建是不管用的,需要先执行"drop table 表名",然后再重新创建该表即可。
2. 对于InnoDB引擎的数据库
可以先尝试执行"drop table 表名",然后再重新创建该表;如果仍有问题,则需要创建一个临时数据库,在临时数据库中创建一个同名数据表,然后将该表文件(只有一个.frm文件)复制到当前的数据库中,赋予mysql权限,然后再执行"drop table 表名",再重新创建该表即可。
喜欢 (0)or分享 (0)
mysql 1005 - can't create table_关于创建数据表报错一例(ERROR 1005 Can’t create table (errno: 121))...相关推荐
- 使用Navicat创建数据库,外键出现错误ERROR 1005: Can't create table (errno: 121)
ERROR 1005: Can't create table (errno: 121) 意思是: 1.表名重复 2.以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上 3.主键名 ...
- mysql设置主键自增长,插入数据时报错,解决
mysql设置主键自增长,插入数据时报错,解决 创建一个可以自增长的表 create table user ( sid int not null primary key auto_inrement, ...
- SAP RETAIL WA01 创建分配表报错 - Plant 0000000039 Confirmation date not maintained.-
SAP RETAIL WA01 创建分配表报错 - Plant 0000000039 Confirmation date not maintained.- 在SAP零售系统里,试图执行事务代码WA01 ...
- Spark创建hive表报错 ROW FORMAT DELIMITED is only compatible with ‘textfile‘, not ‘orc‘
创建hive表失败: 报错异常信息: Operation not allowed: ROW FORMAT DELIMITED is only compatible with 'textfile', n ...
- SAP RETAIL WA01创建分配表报错- No allocation rule allowed for allocation strategies or variants-
SAP RETAIL WA01创建分配表报错- No allocation rule allowed for allocation strategies or variants- 1,执行事务代码WA ...
- MySQL通过存储过程使用循环结构循环创建数据,以及批量数据的导入导出
1. 创建数据 为了实现批量数据的导入导出,首先需要创建大量的数据,通过循环结构搭配存储过程实现循环插入,但是这种方式相当慢,博主插入1万条数据,花费了5分钟54秒的时间. 需要注意的两点:①不管是循 ...
- MySql创建临时表报错 Statement violates GTID consistency
MySql 在创建临时表时候报错 :Statement violates GTID consistency 一.问题重现 drop table if exists temp_01; create ta ...
- Mysql学习笔记3-数据类型+创建数据表+唯一性
有符号:数字的最高位用0表示正数,用1表示负数 无符号:永远都是正数. 数据优化的一个原则,是选则最合理.最合适的数据类型,因为所占空间小. 定长类型:CHAR(少的字节会自动补偿空格) 变长类型:V ...
- Spark 创建 hive表报错 ROW FORMAT DELIMITED is only compatible with 'textfile', not 'parquet'
场景: 在spark分析数据时,创建hive表失败. 提示异常 : 19/10/09 10:59:18 INFO execution.SparkSqlParser: Parsing command: ...
最新文章
- 为了拿捏 Redis 数据结构,我画了 40 张图
- HDU 3251 Being a Hero
- ROI Align 在 R-FCN 中的推广:PSROI-Align(附代码)
- (二)Javascript面向对象编程:构造函数的继承
- 【C/C++多线程编程之九】pthread读写锁
- iOS程序员也要学点算法吧 简单排序之插入排序
- 任何傅里叶级数展开和卷积可以参考一下页面
- Android官方开发文档Training系列课程中文版:键盘输入处理之指定输入的类型
- 结对第一次—原型设计
- ISO 9001质量管理体系标准概述
- Ubuntu 安装 Libmodbus
- 八字易经算法之用JAVA实现排八字神煞
- Python爬虫实战——签名软件设计(一)python POST模拟网页按钮点击
- android 6.0 官方下载,安卓6.0官方正式版
- CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirror.tuna.tsinghua.edu.cn/anaconda/pkg
- 计算机高中竞赛自主招生,自主招生必备常识:高校认可的各类竞赛
- 如何彻底卸载SQL Server 2008
- 椭圆曲线图像加密 matlab,椭圆曲线ECC加密算法入门介绍(三、四)
- C语言 输入成绩按成绩输出等级
- Facebook营销进阶技巧有哪些
热门文章
- 反馈页面设计_获得设计反馈的艺术
- 你可能不知道的package.json
- 重学JavaScript深入理解系列(六)
- 初识docker,弄清镜像和容器
- 微信小程序第三方服务公司有哪些
- Directx11学习笔记【二】 将HelloWin封装成类
- HDU 4864 Task(贪心或高斯消元)
- 最常用的动态sql语句梳理Mybatis(转)
- HDU 4267 A Simple Problem with Integers [树状数组]
- 解决vista/win7安装windows live messenger 2011找不到wlidcli.dll及错误800488eb .