Mysql 将myisam转换为innodb给出;“表已存在”;在(几乎)所有的桌子上
这应该很容易。。。我有一个数据库,里面有大约20个表,都是MyISAM。我想把它们转换成InnoSB,所以我执行了:Mysql 将myisam转换为innodb给出;“表已存在”;在(几乎)所有的桌子上,mysql,innodb,myisam,alter,Mysql,Innodb,Myisam,Alter,这应该很容易。。。我有一个数据库,里面有大约20个表,都是MyISAM。我想把它们转换成InnoSB,所以我执行了: alter table xxxx engine = InnoDB; 结果我得到了 ERROR 1050 (42S01): Table './yyy/xxx' already exists 我试了几张桌子,我想这一切都会发生,直到 我打了两张正确转换的桌子。 显示表格状态确认转换正确。奇怪的是 其他几个表的结构非常相似或相同,但 我没有皈依 MySQL版本是5.5.27。。。我
alter table xxxx engine = InnoDB;
结果我得到了
ERROR 1050 (42S01): Table './yyy/xxx' already exists
我试了几张桌子,我想这一切都会发生,直到
我打了两张正确转换的桌子。
显示表格状态确认转换正确。奇怪的是
其他几个表的结构非常相似或相同,但
我没有皈依
MySQL版本是5.5.27。。。我通过phpMyAdmin直接试过了
通过mysql命令。同样的结果
注意:我发现了如下所示的线程,下面是一些测试:
-我把桌子弄脏了-没关系。
-建议的下拉表有效,表消失,
-修复表然后报告它无法对该表进行归档(按逻辑)。
-如果我从备份中重新恢复表,同样的错误会再次出现
是否存在一个我看不到的并行InnoDB表?公平地说,该解决方案的灵感来源于线程中最后一个条目,由#takteek表示 我认为问题可能是一个重复的表(MyISAM中的原始表,以及InnoDB中的一些表,都是从以前的实验中遗留下来的),我决定使用sledgehammer方法:
- 删除数据库yyy李>
- 从备份中恢复了MyISAM数据库(停止服务器,解除服务器的备份) 数据库存档,重新启动服务器)
- 然后更改每个表上的表
不管怎样,也许这对某人有帮助 也许可以看看这里的一些答案:是的,我当然读过这篇文章。我做了几个建议的解决方案,还检查了我在其他邮件中找到的许多“外键”参考资料。不,这里所有的解决方案都是“可测试的”,因为我正在尝试转换,所以我无法真正删除原始数据库。我在原始消息中添加了一些。我想您可以在不同的模式中创建新表,并使用INSERT复制数据。。选择。我真的不知道是什么导致了你的错误。表文件的权限问题。。。?