簡體   English   中英

mariadb foriegn密鑰插入錯誤

[英]mariadb foriegn key insert error

因此,我在Centos 6上使用mysql服務器,然后我將代碼轉移到Centos 7服務器。

我在一個表中有一個約束,我曾經在其中默認情況下在MySQL Server中插入空值。 我想那在MariaDB中不會發生。

插入數據時出現以下錯誤。

ERROR 1452(23000):不能添加或更新子行,外鍵約束失敗( dbNametableName ,約束constraintName外鍵( 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`)
);

如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM