首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SDI8- DROP或ALTER导致错误3664 (HY000):无法设置MySQL

SDI8- DROP或ALTER导致错误3664 (HY000):无法设置MySQL
EN

Stack Overflow用户
提问于 2018-05-21 07:20:02
回答 4查看 5.9K关注 0票数 9
代码语言:javascript
复制
ERROR 3664 (HY000): Failed to set SDI 'MyDatabase.MyTable' in tablespace 'mydatabase/mytable'.

每当尝试DROP数据库或ALTER表时,我都会遇到这个错误。我无法删除或更改我创建的任何表。

现在,真正有趣的是,这些错误只有在重新启动MySQL并随后(由根用户)登录到MySQL之后才会发生。模式是这样的:

重新启动MySQL似乎允许它识别新的数据库和表更改,并更新与我想要更改的InnoDB数据库表和表空间相关的某种SDI (Serialized Dictionary Information)元数据。不知何故,这种对SDI信息的识别阻碍了我的ALTERDROP命令。这可能是MySQL中的一个bug吗?或者,我的root用户是否没有权限运行修改SDI数据的命令?(尽管文档中说SDI数据是由内部API修改的。)

每次创建数据库和表时,都会发生这种情况。所以,对于这个错误,我非常糟糕的解决方法

任何帮助都将不胜感激!谢谢!

我在苹果电脑上运行MySQL 8.0.11社区服务器。

没有解决方案的相同问题:Unable to drop database mysql: ERROR 3664 (HY000)

EN

回答 4

Stack Overflow用户

发布于 2018-10-26 22:23:21

我和我的几个学生已经看到这个问题越来越多地出现。

作为一种解决办法,我发现,如果您进入问题数据库中的所有表并执行analyze table,它将修复此错误,直到您下次重新启动服务器。

票数 9
EN

Stack Overflow用户

发布于 2018-05-21 07:45:22

这是mysql-8.0.11中的相关补丁:

https://github.com/mysql/mysql-server/commit/261981bdf42c110f08f98ad2cf84ce6fdef1949e

sdi_debug.result似乎表明

代码语言:javascript
复制
SET GLOBAL DEBUG = '-d, sdi_delete_failure';

是解决这个问题所必需的。

票数 2
EN

Stack Overflow用户

发布于 2018-08-10 17:48:52

如果清空了所有表,则可以删除该架构。

有趣的是,如果在PHP中使用PDO,则此语句有效

代码语言:javascript
复制
$conn->exec("DROP DATABASE IF EXISTS $dbname");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50440247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档