ERROR 3664 (HY000): Failed to set SDI 'MyDatabase.MyTable' in tablespace 'mydatabase/mytable'.
Run Code Online (Sandbox Code Playgroud)
每当尝试DROP数据库或ALTER表时,我都会遇到此错误.我无法删除或更改我创建的任何表.
现在,真正有趣的是这些错误只发生在重启MySQL和后续登录(由root用户)到MySQL之后.这是模式:
DROPALTER没有问题的数据库或表:)DROP的数据库或ALTER表时获取ERROR 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)
这是mysql-8.0.11中的相关补丁:
https://github.com/mysql/mysql-server/commit/261981bdf42c110f08f98ad2cf84ce6fdef1949e
sdi_debug.result似乎表明
SET GLOBAL DEBUG = '-d, sdi_delete_failure';
Run Code Online (Sandbox Code Playgroud)
需要克服这个问题。