mariadb foriegn密钥插入错误

时间:2016-08-21 17:52:45

标签: mysql mariadb

所以,我在Centos 6上使用mysql服务器然后就好了,我将代码转移到了Centos 7服务器。

我在一个表中有一个约束,我曾经在MySQL服务器中默认插入空值。我想这不会发生在MariaDB中。

插入数据时出现以下错误。

错误1452(23000):无法添加或更新子行:外键约束失败(dbNametableName,CONSTRAINT constraintName FOREIGN KEY(columnName)参考externalTableNameexternalTableColumnName))

任何帮助都将不胜感激。

由于

更新1:

带有要引用的键的表:

CREATE TABLE `users` (
  `uid` int(25) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`uid`)
);

CREATE TABLE `abc_xyz` (
  `isUser` int(25) DEFAULT NULL,
  `last_modified_user` int(25) DEFAULT NULL,
  KEY `abc_xyz_is_user` (`isUser`),
  KEY `abc_xyz_last_modified_user` (`last_modified_user`),
  CONSTRAINT `abc_xyz_is_user` FOREIGN KEY (`isUser`) REFERENCES `users` (`uid`),
  CONSTRAINT `abc_xyz_last_modified_user`
            FOREIGN KEY (`last_modified_user`) REFERENCES `users` (`uid`)
);

2 个答案:

答案 0 :(得分:0)

如果columnName为NULL,则表示您没有插入NULL值。我真的怀疑在NULLable列中插入NULL会导致外键失败。检查被调用的查询(如果使用ORM等)。

答案 1 :(得分:0)

问题是您的引用列可以包含NULL值,而引用列则不能(它是PRIMARY KEY)。您无法在abc_xyz.last_modified_user列中输入默认空值,并维护无法接受空的users.uid的有效外键。

  

PRIMARY KEY约束是<表约束>或者a和定义一个规则,该规则仅将唯一键约束为非重复的非空值。 PRIMARY KEY约束所需的语法是:

https://mariadb.com/kb/en/sql-99/constraint_type-primary-key-constraint/