错误121-写入或更新密钥重复

时间:2019-07-29 20:59:35

标签: mysql mariadb

即使表不存在且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';

0 个答案:

没有答案