【发布时间】:2018-10-30 14:27:48
【问题描述】:
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 的重新启动允许它识别新的数据库和表更改并更新与我想要更改的 InnoDB 数据库表和表空间相关联的某种 SDI (Serialized Dictionary Information) 元数据。不知何故,这种对 SDI 信息的识别阻碍了我的 ALTER 和 DROP 命令。 这可能是 MySQL 中的错误吗?或者,我的 root 用户是否无权运行修改 SDI 数据的命令? (尽管文档说 SDI 数据是由内部 API 修改的。)
每次创建数据库和表时都会发生这种情况。所以,我对这个错误非常严重的解决方法:
- 手动删除数据目录下与数据库关联的数据文件。
- 调用
DROP DATABASE IF EXISTS MyDatabase;(可能需要注销/登录几次,或重新启动 MySQL 并尝试使用SELECT语句访问表才能最终工作) - 重新创建所需的数据库和表。
任何帮助将不胜感激!谢谢!
我在 Mac 上运行 MySQL 8.0.11 社区服务器。
同样的问题没有解决方案:Unable to drop database mysql: ERROR 3664 (HY000)
【问题讨论】:
-
老实说,这似乎不是编程问题。要么有一些配置设置需要设置,要么是一个错误。 DBA SE 站点会更好地提出这个问题,因为 DBA 比程序员更了解配置设置和错误。
-
@Shadow 我已将此帖子添加到 MySQL 论坛,如果它获得论坛批准,我将发布链接。谢谢!
-
@TimArterbury 你找到解决这个问题的方法了吗?
-
@eveevans 遗憾的是没有。我在 MySQL 论坛上发帖,但似乎我的帖子从未获得批准。我可能会尝试提交错误报告。有趣的是这样一个简单的错误并没有被捕获。我只是想使用一个基本的 MySQL 功能来删除数据库 lolz。
-
我认为这是错误。删除数据库的单一方法是删除文件,然后重复删除模式。