MySQL 5.6执行DDL报错ERROR 1050 (42S01): Table 'sms/#sql-ib752' already exist怎么办

发布时间:2021-11-06 15:37:29 作者:小新
来源:亿速云 阅读:212

这篇文章主要介绍MySQL 5.6执行DDL报错ERROR 1050 (42S01): Table 'sms/#sql-ib752' already exist怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

执行ALTER TABLE增加字段的时候报错:

mysql> ALTER TABLE who_sku_relation ADD COLUMN red_line_price DECIMAL(10,2) NOT NULL DEFAULT '0.00';
ERROR 1050 (42S01): Table 'sms/#sql-ib75227' already exists

报错原因:

在alter table的过程中,MySQL宕机,会在数据目录里存在数据变更的中间表,中间表是以“#sql-”开头的临时表。

临时表不手动删除掉,无法在相应的表上执行 ALTER TABLE 语句。

在数据目录里面查看临时表的信息,找不到 .frm表结构文件和 .ibd数据文件。

$ ls -l | grep  '#sql-ib75227*' | wc -l

解决方法:

手动创建 .frm表结构文件和 .ibd数据文件,之后删除临时表。

创建一张测试表。

mysql> use test
mysql> create table test.tmp like sms.who_sku_relation;
Query OK, 0 rows affected (0.00 sec)

将测试表的 .frm 表结构文件拷贝成临时表的 .frm 表结构文件和 .ibd 数据文件。

$ cp ../test/tmp.frm  "#sql-ib75227.frm"
$ cp ../test/tmp.frm  "#sql-ib75227.ibd"
$ ls -l \#sql-ib75227*
-rw-r----- 1 tungsten mysql 15007 Sep 29 21:23 #sql-ib75227.frm
-rw-r----- 1 tungsten mysql 15007 Sep 29 21:25 #sql-ib75227.ibd

在数据库中 DROP 临时表,并在原来增加表结构出错的表上执行结构变更。

mysql> drop table `#mysql50##sql-ib75227`;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER TABLE who_sku_relation ADD COLUMN red_line_price DECIMAL(10,2) NOT NULL DEFAULT '0.00';
ERROR 1813 (HY000): Tablespace for table 'sms/#sql-ib75227' exists. Please DISCARD the tablespace before IMPORT.

删除掉数据文件中残留的临时表数据文件。

$ ls -l \#sql-ib75227*
-rw-r----- 1 tungsten mysql 15007 Sep 29 21:25 #sql-ib75227.ibd
$ rm "#sql-ib75227.ibd"

执行数据库表结构变更

mysql> ALTER TABLE who_sku_relation ADD COLUMN red_line_price DECIMAL(10,2) NOT NULL DEFAULT '0.00';
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

以上是“MySQL 5.6执行DDL报错ERROR 1050 (42S01): Table 'sms/#sql-ib752' already exist怎么办”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. MySQL压缩包安装
  2. 怎么在PHP中利用MySQL对session进行保存

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql ddl

上一篇:如何隐藏Ubuntu18.04 左上方的活动按钮

下一篇:怎么将Java代码移植到Go中

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》