ERROR 3664 (HY000): Failed to set SDI 'MyDatabase.MyTable' in tablespace 'mydatabase/mytable'.
DROP
每当尝试数据库或ALTER
表时,我都会遇到此错误。我无法删除或更改我创建的任何表。
现在,真正有趣的是,这些错误仅在重新启动 MySQL 并随后登录(由 root 用户)到 MySQL 之后发生。这是模式:
- 以 root 用户身份登录 MySQL。
- 创建数据库并创建表。
DROP
ALTER
没有问题的数据库或表:)- 退出 MySQL
- 重新启动 MySQL(停止然后启动)
- 以 root 用户身份登录 MySQL。
- 尝试访问我之前创建
DROP
的数据库或ALTER
表时出现错误 3664,阻碍任何DROP
或ALTER
:(
似乎 MySQL 的重新启动允许它识别新的数据库和表更改并更新与我想要更改的数据库表和表空间相关的某种SDI(序列化字典信息)元数据。InnoDB
不知何故,这种对 SDI 信息的识别阻碍了我的ALTER
命令DROP
。这可能是 MySQL 中的错误吗?或者,我的 root 用户是否无权运行修改 SDI 数据的命令?(尽管文档说 SDI 数据是由内部 API 修改的。)
每次我创建数据库和表时都会发生这种情况。所以,我对这个错误非常严重的解决方法:
- 手动删除数据目录下与数据库关联的数据文件。
- 调用
DROP DATABASE IF EXISTS MyDatabase;
(可能需要注销/登录几次,或重新启动 MySQL 并尝试使用SELECT
语句访问表以使其最终起作用) - 重新创建所需的数据库和表。
任何帮助将不胜感激!谢谢!
我在 Mac 上运行 MySQL 8.0.11 社区服务器。
没有解决方案的相同问题:无法删除数据库 mysql: ERROR 3664 (HY000)