2016-10-25 2 views
-3

부모 테이블에 필요한 정보를 이미 추가했지만 외래 키 문제가 있습니다. 다음은 부모 테이블에 외래 키가 존재하고 하위 테이블에 새 데이터가 삽입됨을 나타내는 select 문입니다.1452 - 자식 행을 추가하거나 업데이트 할 수 없습니다. 외래 키 제약 조건이 적용되지 않습니다.

MariaDB [scannedmusic]> show create 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을 CONSTRAINT fk_images FOREIGN KEY (CHImageID)는 chhymnal (CHhymnalID))

,536,913 참고 문헌
+0

당신이 싫어요 3 개 (또는 모드)와 함께 귀하의 게시물을 삭제하면 chimageid해야 귀하의 명성 포인트는 것입니다 b 다시 당신에게. –

답변

0

잘못된 열을보고 있습니다. 표 chhymnal에는 행이 chhymnalid = 393이 없습니다.

귀하의 SELECT

당신이 당신의 chhymnalid에서 chhymnal 테이블을 확인하는 것이 좋습니다,하지만 외래 키 제약 조건은 INSERT 문에 393 값을 가지고 chimageid에서 작동합니다.

두 가지 옵션이 있습니다 - 중 하나에 해당해야합니다 : 당신은 외래 키 제약 조건을 생성 할 때 입력 한 내용과 의미 그리고 당신은 잘못된 열 이름이 chhymnal

  • 테이블에 chhymnalid = 393 아무 행이없는

    1. 외래 키 제약 조건에서 참조하고 chhymnalid 대신
  • 관련 문제

     관련 문제