我正在尝试重命名InnoDB表,但收到错误消息“ errno:155该表在引擎中不存在”
表已分区,所有ibd文件似乎都存在。 frm文件存在。桌上没有外键。除了主键,我已经删除了所有索引。显示引擎INNODB状态未显示任何错误。
我尝试在另一个数据库中创建相同的表,并将ibd和/或frm文件从一个复制到另一个。删除表有效,但我想保留数据!该表是50G,因此将其复制到另一个表实际上并不可行。我确实需要能够重命名它,但是我找不到解决方法,也不知道是什么原因造成的。
它不是下面链接的问题的重复项。 ibdata1文件存在。我无法创建具有相同结构的新表,因为它告诉我该表已经存在。我试过删除表,重新创建它,然后执行IMPORT TABLESPACE,但它说它找不到表空间(也许是因为它已分区,所以没有单个ibd文件?)
***********************************解决方案*********** ******************
我发现了我的探测的解决方案,以防有人遇到相同的问题。在其他帖子上也有类似的解决方案,但都不是针对分区表的,我花了一段时间才弄清楚我可以对分区运行类似的TABLESPACE命令。
已移动/重命名了表分区的所有.ibd文件。
删除表并使用相同的结构重新创建。
为每个分区运行“ ALTER TABLE表DISCARD PARTITION分区表空间”。
将所有原始.ibd文件移回其原始位置/文件名。
为每个分区运行“ ALTER TABLE表IMPORT PARTITION分区TABLESPACE”。