即使表不存在且FK不在系统架构中显示,仍继续在MariaDB 10.3.13 / 14/15/16中获得此错误。我已经阅读了许多有关此错误的文章,并且知道FK名称不能存在于数据库中的其他任何地方,而其他地方则不存在。在10.3.12中不会发生此问题,因此我开始怀疑MariaDB是否存在问题?我不能相信答案应该是“删除数据库并重新开始”,因为应该有某种方法让Maria看到FK不存在。
完全删除了该表并验证了该FK仅存在于被删除的该表中。
我可以通过从create table语句中删除FK约束的声明来重建表,一旦表重建,FK就在那儿,就像它以某种方式从仍然存在于数据库中的某个地方将其捡起一样-疯了。 / p>
我的创建语句如下所示
CREATE TABLE `trace_properties` (
`MessageId` bigint(20) NOT NULL,
`PropertyName` varchar(255) NOT NULL,
`PropertyValue` varchar(4096) NOT NULL,
PRIMARY KEY (`MessageId`,`PropertyName`),
KEY `NameValueIDX` (`PropertyName`,`PropertyValue`(767)),
KEY `MessageIdIDX` (`MessageId`),
CONSTRAINT `FK_traceproperties_1` FOREIGN KEY (`MessageId`) REFERENCES `trace_messages` (`TraceMessageId`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我的预期结果是,我应该能够删除成功完成的trace_properties,然后使用上面的脚本执行创建,该脚本在100%的时间内失败,表明FK存在。
但是,我可以运行以下查询并获得一个空结果集,表明至少在信息模式中FK不存在。
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'idf';