重启MySQL服务后,导致数据表不存在的问题记录

最近发现了个问题,如标题。

具体操作说不清了,但大概是这样的
我使用MySQL Workbench来进行数据模型的同步,然后在修改一些原有表的设计的时候,Workbench把我的表外键给删掉了,我也没有在意,就同步了数据库。
然后在MySQL服务重启之后就出现了这种状况,如果你也是这种状况,[color=red]can't select from existing table because it doesn't exist [/color],那么八成是我这里描述的问题。


问题解决
1.打开MySQL的errorLog,具体就在MySQL的安装目录下的my.cnf文件里,添加err-log的生成路径,然后查看错误日志。

2.发现错误日志在查询表的时候,出现如下内容
InnoDB: Load table 'mydb/test1' failed, the table has missing foreign key indexes.
也就是无法加载我这个表,不是表丢了,而是无法加载,我这个表找不到对应的外键索引。

后经Google,说者可能是MySQL的一个bug,就是删除了在外键列上的索引导致的,MySQL官方描述的这俩问题
https://bugs.mysql.com/bug.php?id=68148
https://bugs.mysql.com/bug.php?id=74659

3.遇到这个问题的解决办法,就是先将检测外键的功能给关掉
SET FOREIGN_KEY_CHECKS=0;
然后可以通过create index来把索引补回来。
然后再把检测外键的开关打开
SET FOREIGN_KEY_CHECKS=1;

4.补充一下,我遇到的这个问题和上面描述还有一点不太一样,就是我的外键索引是存在的,但是名字居然和我的外键名字完全相同,估计是通过workbench同步的时候生成代码出错导致的,也出现同样的问题,我就讲原来的索引干掉,重新创建了一下之后,问题解决了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值