ERROR 3664 (HY000): Failed to set SDI 'MyDatabase.MyTable' in tablespace 'mydatabase/mytable'.
每当尝试DROP
数据库或ALTER
表时,我都会遇到这个错误。我无法删除或更改我创建的任何表。
现在,真正有趣的是,这些错误只有在重新启动MySQL并随后(由根用户)登录到MySQL之后才会发生。模式是这样的:
重新启动MySQL似乎允许它识别新的数据库和表更改,并更新与我想要更改的InnoDB
数据库表和表空间相关的某种SDI (Serialized Dictionary Information)元数据。不知何故,这种对SDI信息的识别阻碍了我的ALTER
和DROP
命令。这可能是MySQL中的一个bug吗?或者,我的root用户是否没有权限运行修改SDI数据的命令?(尽管文档中说SDI数据是由内部API修改的。)
每次创建数据库和表时,都会发生这种情况。所以,对于这个错误,我非常糟糕的解决方法
任何帮助都将不胜感激!谢谢!
我在苹果电脑上运行MySQL 8.0.11社区服务器。
没有解决方案的相同问题:Unable to drop database mysql: ERROR 3664 (HY000)
发布于 2018-10-26 22:23:21
我和我的几个学生已经看到这个问题越来越多地出现。
作为一种解决办法,我发现,如果您进入问题数据库中的所有表并执行analyze table
,它将修复此错误,直到您下次重新启动服务器。
发布于 2018-05-21 07:45:22
这是mysql-8.0.11中的相关补丁:
https://github.com/mysql/mysql-server/commit/261981bdf42c110f08f98ad2cf84ce6fdef1949e
sdi_debug.result似乎表明
SET GLOBAL DEBUG = '-d, sdi_delete_failure';
是解决这个问题所必需的。
发布于 2018-08-10 17:48:52
如果清空了所有表,则可以删除该架构。
有趣的是,如果在PHP中使用PDO,则此语句有效
$conn->exec("DROP DATABASE IF EXISTS $dbname");
https://stackoverflow.com/questions/50440247
复制相似问题