问题描述

曾遇到创建数据表报错问题,报错如下:

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))...相关推荐

  1. 使用Navicat创建数据库,外键出现错误ERROR 1005: Can't create table (errno: 121)

    ERROR 1005: Can't create table (errno: 121) 意思是: 1.表名重复 2.以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上 3.主键名 ...

  2. mysql设置主键自增长,插入数据时报错,解决

    mysql设置主键自增长,插入数据时报错,解决 创建一个可以自增长的表 create table user ( sid int not null primary key auto_inrement, ...

  3. SAP RETAIL WA01 创建分配表报错 - Plant 0000000039 Confirmation date not maintained.-

    SAP RETAIL WA01 创建分配表报错 - Plant 0000000039 Confirmation date not maintained.- 在SAP零售系统里,试图执行事务代码WA01 ...

  4. 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 ...

  5. 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 ...

  6. MySQL通过存储过程使用循环结构循环创建数据,以及批量数据的导入导出

    1. 创建数据 为了实现批量数据的导入导出,首先需要创建大量的数据,通过循环结构搭配存储过程实现循环插入,但是这种方式相当慢,博主插入1万条数据,花费了5分钟54秒的时间. 需要注意的两点:①不管是循 ...

  7. MySql创建临时表报错 Statement violates GTID consistency

    MySql 在创建临时表时候报错 :Statement violates GTID consistency 一.问题重现 drop table if exists temp_01; create ta ...

  8. Mysql学习笔记3-数据类型+创建数据表+唯一性

    有符号:数字的最高位用0表示正数,用1表示负数 无符号:永远都是正数. 数据优化的一个原则,是选则最合理.最合适的数据类型,因为所占空间小. 定长类型:CHAR(少的字节会自动补偿空格) 变长类型:V ...

  9. 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: ...

最新文章

  1. 为了拿捏 Redis 数据结构,我画了 40 张图
  2. HDU 3251 Being a Hero
  3. ROI Align 在 R-FCN 中的推广:PSROI-Align(附代码)
  4. (二)Javascript面向对象编程:构造函数的继承
  5. 【C/C++多线程编程之九】pthread读写锁
  6. iOS程序员也要学点算法吧 简单排序之插入排序
  7. 任何傅里叶级数展开和卷积可以参考一下页面
  8. Android官方开发文档Training系列课程中文版:键盘输入处理之指定输入的类型
  9. 结对第一次—原型设计
  10. ISO 9001质量管理体系标准概述
  11. Ubuntu 安装 Libmodbus
  12. 八字易经算法之用JAVA实现排八字神煞
  13. Python爬虫实战——签名软件设计(一)python POST模拟网页按钮点击
  14. android 6.0 官方下载,安卓6.0官方正式版
  15. CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirror.tuna.tsinghua.edu.cn/anaconda/pkg
  16. 计算机高中竞赛自主招生,自主招生必备常识:高校认可的各类竞赛
  17. 如何彻底卸载SQL Server 2008
  18. 椭圆曲线图像加密 matlab,椭圆曲线ECC加密算法入门介绍(三、四)
  19. C语言 输入成绩按成绩输出等级
  20. Facebook营销进阶技巧有哪些

热门文章

  1. 反馈页面设计_获得设计反馈的艺术
  2. 你可能不知道的package.json
  3. 重学JavaScript深入理解系列(六)
  4. 初识docker,弄清镜像和容器
  5. 微信小程序第三方服务公司有哪些
  6. Directx11学习笔记【二】 将HelloWin封装成类
  7. HDU 4864 Task(贪心或高斯消元)
  8. 最常用的动态sql语句梳理Mybatis(转)
  9. HDU 4267 A Simple Problem with Integers [树状数组]
  10. 解决vista/win7安装windows live messenger 2011找不到wlidcli.dll及错误800488eb .