2016-10-25 96 views
-3

雖然我已經在父表中添加了必要的信息,但仍有外鍵問題。下面是模式,select語句顯示外鍵存在於父表中,並且錯誤將新數據插入到子表中:1452 - 無法添加或更新子行:外鍵約束失敗

MariaDB [scannedmusic]> show create table chhymnal;

+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                                                                                                                                               | 
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| chhymnal | CREATE TABLE `chhymnal` (<br> 
    `CHhymnalID` int(5) unsigned NOT NULL,<br> 
    `Title` varchar(30) DEFAULT NULL,<br> 
    `CHNumber` int(5) unsigned DEFAULT NULL,<br> 
    `Type` varchar(1) DEFAULT NULL,<br> 
    `WorshipItemType` varchar(30) DEFAULT NULL,<br> 
    `DateLastSung` date DEFAULT NULL,<br> 
    `HighNote` varchar(5) DEFAULT NULL,<br> 
    `UseThisWeek` tinyint(1) DEFAULT NULL,<br> 
    `ServiceOrder` int(2) unsigned DEFAULT NULL,<br> 
    `StartKey` varchar(2) DEFAULT NULL,<br> 
    `EndKey` varchar(2) DEFAULT NULL,<br> 
    `Tempo` int(1) unsigned DEFAULT NULL,<br> 
    `TimeSig` varchar(7) DEFAULT NULL,<br> 
    `CCLINumb` varchar(10) DEFAULT NULL,<br> 
    PRIMARY KEY (`CHhymnalID`)<br> 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |<br> 
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 

1行集(0.00秒)

MariaDB的[scannedmusic]> MariaDB的[scannedmusic]>示出了創建表chimages;

+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                                                                  | 
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| <br>chimages | CREATE TABLE `chimages` (<br> 
    `CHImageID` int(5) unsigned NOT NULL,<br> 
    `ImagePath` varchar(50) DEFAULT NULL,<br> 
    `Instrument` varchar(30) DEFAULT NULL,<br> 
    `CHhymnalID` int(5) DEFAULT NULL,<br> 
    PRIMARY KEY (`CHImageID`),<br> 
    CONSTRAINT `fk_images` FOREIGN KEY (`CHImageID`) REFERENCES `chhymnal` (`CHhymnalID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+<br> 
1 row in set (0.00 sec) 
MariaDB [scannedmusic]> SELECT * FROM `chhymnal` WHERE `CHhymnalID` = 343; 
+------------+-------------------------+----------+------+-----------------+--------------+----------+-------------+--------------+----------+--------+-------+---------+----------+ 
| CHhymnalID | Title     | CHNumber | Type | WorshipItemType | DateLastSung | HighNote | UseThisWeek | ServiceOrder | StartKey | EndKey | Tempo | TimeSig | CCLINumb |<br> 
+------------+-------------------------+----------+------+-----------------+--------------+----------+-------------+--------------+----------+--------+-------+---------+----------+ 
|  343 | What a Day That Will Be |  762 | h | Hymn   | 0000-00-00 | Db  |   0 |   12 | Ab  | Ab  |  3 | 3/4  |   | 
+------------+-------------------------+----------+------+-----------------+--------------+----------+-------------+--------------+----------+--------+-------+---------+----------+ 

1行中集(0.00秒)

MariaDB [scannedmusic]> INSERT INTO <br>Chimages(`CHImageID`,`ImagePath`,`CHhymnalID`) VALUES (393, "\\BMP\\762_o1.bmp",343); 

ERROR 1452(23000):不能添加或更新子行:外鍵 約束失敗(scannedmusicchimages,約束fk_images 外鍵(CHImageID)參考文獻chhymnalCHhymnalID))

+0

如果您刪除後用3個不喜歡(或模式) 你的聲望點數將b回到你身邊。 –

回答

0

您正在查看錯誤的列。在表chhymnal中,沒有與chhymnalid = 393的行。

SELECT聲明建議您檢查您的chhymnalidchhymnal表,但你的外鍵約束作用於chimageid已在您的INSERT聲明393值。

有兩個選項 - 其中一個必須是真實的:

  1. 你意思是說你鍵入創建外鍵約束的時候什麼並且在表chhymnalid = 393沒有行chhymnal
  2. 你有錯列名外鍵約束的引用,它應該是chhymnalid而不是chimageid
相關問題