[英]mariadb foriegn key insert error
因此,我在Centos 6上使用mysql服務器,然后我將代碼轉移到Centos 7服務器。
我在一個表中有一個約束,我曾經在其中默認情況下在MySQL Server中插入空值。 我想那在MariaDB中不會發生。
插入數據時出現以下錯誤。
ERROR 1452(23000):不能添加或更新子行,外鍵約束失敗( dbName
。 tableName
,約束constraintName
外鍵( 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`)
);
如果columnName
為NULL,則您不會插入NULL值。 我真的懷疑在NULLable列中插入NULL會導致外鍵失敗。 檢查正在調用的查詢(如果使用ORM等)。
問題是您的引薦列可以包含NULL值,而被引薦列不能包含NULL值(這是PRIMARY KEY)。 您不能輸入的默認空值abc_xyz.last_modified_user
列並保持一個有效的外鍵users.uid
不能接受空。
PRIMARY KEY Constraint是<Table Constraint>或a,它定義了一個規則,該規則將唯一鍵限制為非重復,非空值。 PRIMARY KEY約束的必需語法為:
https://mariadb.com/kb/zh-CN/sql-99/constraint_type-primary-key-constraint/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.