刨根问底:Mysql执行插入脚本报Tablespace exists错误?

今天来公司启动项目发现有报错,找找原因原来是上周新建的几张表找不到了。问同事说是把公司库还原成了现场的库,ohhh,吓一跳。冷静一想,幸亏有备份的习惯,有执行脚本在丢了也不怕,好吧,开始执行脚本,但是在执行脚本的时候依然有报错,查了表是不存在的但是却报创建的表已经存在错误。该怎么办呢?

百度一番找到解决办法:

1.在数据库执行showglobalvariableslike"%datadir%";

2.去这个目录下面找表名文件,在删除了该.ibd文件文件后再重新创建表就没有问题了。

果然ok如下:

解决问题了该解释下这个原因了。

ibd是MySQL数据文件、索引文件,无法直接读取。 frm是表结构文件,可以直接打开。 大概原因就是,由于之前库里有这个表,数据库会自动建立索引,恢复现场表的时候不会将索引文件删除,只会删除对应的表。所以导致新增无法新增同名的表。

下次遇到这个问题就不着急了,归根到底记住两点,1.任何写好在本地已执行的sql先备份,2.遇到类似问题来这里查看下解决方式就ok。

不积跬步无以至千里,不积小流无以成江海,一起学习每天进步一点点!!!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181115G0LM8900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券