我删除了数据库中的所有表,但必须使用foreign_key_checks=0
,因为引用另一个表的表未被删除。
现在我启用了外键检查,但无法在空数据库中创建users
表。我觉得有一个悬而未决的 FK 约束。我删除了数据库并重新创建,结果相同。
[HY000][1822] Failed to add the foreign key constraint. Missing index for constraint 'apiCalls_users_Id_fk' in the referenced table 'users'
set foreign_key_checks=0; --with or without this, same thing.
CREATE TABLE users (
id integer NOT NULL,
);
这实际上是我试图在没有表的空数据库中创建的内容,该数据库已被删除并使用创建架构
重新创建。
仅 1 列就失败了。如果我在架构 some_other_schema_name
中尝试此操作,它会起作用。
还重新启动了MySQL几次,没有变化。
mysql Ver 8.0.15,适用于 x86_64 上的 osx10.14(自制软件)
有什么想法吗?
最佳答案
另一个数据库(!)(另一个模式!)中有另一个约束引用此数据库中的约束。 (这是 ORM 自动错误创建的)
我通过查看 information_schema.KEY_COLUMN_USAGE
并运行查询 CONSTRAINT_NAME LIKE '%apiCalls%'
来查找引用的内容,发现了这一点...
有趣。
关于没有 FK 的空数据库上的 MySQL 无法创建表 : Failed to add the foreign key constraint. 缺少约束索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55554587/