错误:表的表空间存在。请在导入之前丢弃表空间
问题:
MySQL 用户在尝试创建以前存在的表时遇到错误。该错误消息表明该表的表空间已经存在,并且应该在导入之前丢弃它。但是,当尝试删除表或放弃表空间时,错误消息指出该表不存在。是什么原因导致此问题?
答案:
在“innodb_file_per_table”模式下运行并遇到“表空间已满”错误时,通常会发生此错误。数据库服务器的表空间由 innodb_data_file_path 设置定义,默认情况下可以对其进行限制。
在这种情况下,操作系统目录中可能存在孤立的 .ibd 文件,而没有其配套的 .frm 文件,其中文件-每个表都存储(通常是 /var/lib/mysql 或/usr/local/var/mysql)。
解决方案:
解决问题:
示例:
$ ls /var/lib/mysql table1.frm table1.idb table2.frm table2.idb table3.idb <-- problem table, no table3.frm table4.frm table4.idb $ mkdir /tmp/mysql_orphans $ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/
注意: 确保任何根本原因,例如长时间运行的查询或锁定的表,已得到解决,以防止进一步孤立的 .ibd 文件已创建。
以上是MySQL 导入错误:表空间存在但表不存在?的详细内容。更多信息请关注PHP中文网其他相关文章!