所以,我在Centos 6上使用mysql服务器然后就好了,我将代码转移到了Centos 7服务器。
我在一个表中有一个约束,我曾经在MySQL服务器中默认插入空值。我想这不会发生在MariaDB中。
插入数据时出现以下错误。
错误1452(23000):无法添加或更新子行:外键约束失败(dbName
。tableName
,CONSTRAINT constraintName
FOREIGN KEY(columnName
)参考externalTableName
(externalTableColumnName
))
任何帮助都将不胜感激。
由于
更新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`)
);
答案 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/