Error number: MY-013002; Symbol: ER_IB_MSG_1177; SQLSTATE: HY000
Message: %s
错误说明
ER_IB_MSG_1177,MySQL错误号MY-013002,SQLSTATE值为HY000,是InnoDB特定的错误码。这意味着InnoDB公用文件引擎不能产生多个未关闭的实例或表空间。此消息意味着,用户需要保证,在一台计算机上没有其他数据库实例“相同”的InnoDB表空间可用。
常见案例
当用户试图从另一个MySQL实例安装具有相同表空间名称(或模式)的InnoDB数据库时,可能会发生此错误。这可能会发生,比如,当在多实例中发生数据传输,假定用户从主实例的备份恢复了他的从实例,但没有小心指定不同的表空间名称。尝试装在同一台计算机上的“相同”InnoDB表空间名称(或模式)也会产生此错误。
解决方法
MySQL错误号MY-013002解决方法是确保一个计算机上只有一个“相同”的InnoDB表空间可用,即表空间名称必须唯一。用户可能需要更改表空间名称,或更改它们。用户可以通过检查/var/lib/mysql/ibdata文件来确定是否存在任何其他InnoDB实例:
$ ls -l /var/lib/mysql/ibdata
如果没有其他的ibdata,则可以安装带有相同名称的表空间。或者,用户可以使用相同InnoDB表空间名称/模式时卸载其他InnoDB实例:
$ mysqladmin -u root -p shutdown
如果以上步骤仍然不起作用,例如,因为错误关闭或重新开始,则可以尝试将ibdata文件更改为其他名称,或者删除它:
$ mv /var/lib/mysql/ibdata /var/lib/mysql/ibdata.bak
此操作可能会终止任何其他正在运行的实例。最后,用户也可以删除其InnoDB表空间/模式。
最后一种可行的解决方案是修改MySQL [mysqld]配置文件,将innodb_file_per_table参数设置为1。这使用每个InnoDB表空间一个文件,从而避免安装具有相同表空间名称的实例。应适当重启MySQL服务器后,此参数才会生效。