Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将myisam转换为innodb给出;“表已存在”;在(几乎)所有的桌子上_Mysql_Innodb_Myisam_Alter - Fatal编程技术网

Mysql 将myisam转换为innodb给出;“表已存在”;在(几乎)所有的桌子上

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。。。我

这应该很容易。。。我有一个数据库,里面有大约20个表,都是MyISAM。我想把它们转换成InnoSB,所以我执行了:

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复制数据。。选择。我真的不知道是什么导致了你的错误。表文件的权限问题。。。?