2012-10-15 2 views
1

MYSQL에서 다음 정보를 삽입하려고하는데 위 오류가 계속 발생합니까? 값 중 하나만 삽입하려고해도 오류가 계속 발생합니다.오류 코드 : 1136. 열 개수가 행 1의 값 개수와 일치하지 않습니다.

CREATE TABLE depositor 
    (depositor_name char(30), 
    depositor_number varchar(20), 
    PRIMARY KEY (depositor_number), 
    FOREIGN KEY (depositor_name) REFERENCES depositor(depositor_name)); 

INSERT INTO depositor VALUES("Johnson", "A-101"); 
INSERT INTO depositor VALUES("Smith", "A-215"); 
INSERT INTO depositor VALUES("Hayes", "A-102"); 
INSERT INTO depositor VALUES("Hayes", "A-101"); 
INSERT INTO depositor VALUES("Turner", "A-305"); 
INSERT INTO depositor VALUES("Johnson", "A-201"); 
INSERT INTO depositor VALUES("Jones", "A-217"); 
INSERT INTO depositor VALUES("Lindsay", "A-222"); 
INSERT INTO depositor VALUES("Majeris", "A-333"); 
INSERT INTO depositor VALUES("Smith", "A-444"); 

SELECT * FROM DEPOSITOR 
+1

왜 외래 키 제약 조건이 필요합니까? –

+2

실제로 insert 문에 대한 모든 컬럼을 명시하는 것은 좋은 프로그래밍 습관이다 :'depositor (depositor_name, depositor_number) values ​​.... '에 삽입하라. –

답변

1

작은 따옴표로 큰 따옴표를 교체 : 외부 키는 어떤 의미 (실제로 내가 MySQL은 당신이 그것을 만들 수 있다는 놀랍군요하지 않는, 자신을 참조하는

INSERT INTO depositor VALUES('Johnson', 'A-101'); 
+0

계정과 관련하여이 비슷한 계정을 얻었습니다 : –

+1

-1 왜 이것이 효과가 있습니까? [문자열 리터럴] (http://dev.mysql.com/doc/en/string-literals.html)은 작은 따옴표 ("'''") 나 큰 따옴표 ("'''")로 묶을 수 있습니다. 문자 수 * 어떤 경우에도 수신 된 특정 오류 메시지는 설명하지 않습니다 : * 1136. 열 수는 행 1 *의 값 수와 일치하지 않습니다. – eggyal

+0

복사 할 때마다 볼 수 있지만 페이지가 정지를 추가 붙여 S –

0

: 나는 시도 할 때 오류가 발생합니다. 사용자가 알지 못해서 CREATE TABLE 명령이 실패하고 두 열이없는 이전 버전의 테이블에 INSERT을 시도하고 있습니다.).

외래 키 제약 조건 (및 DROP 기존 테이블 제외)을 제거하십시오.

+0

좋습니다. 감사합니다. 실제로 스크립트는 제게는 스크립트이고 실행하려면 클래스는 모두 pag입니다. 우리가 다운로드 할 수 있습니다. 이 경우 누군가가 LOL을 사용하게되면 놀랄 것입니다! –

1

만약 누군가를 도울 수 있습니다.

테이블 X에서 삽입 및 업데이트를 실행하는 동안이 오류가 발생했습니다. 삽입 및 업데이트 쿼리에는 아무런 문제가 없었습니다. 다른 테이블 Y에 업데이트/삽입되는 행을 삽입하는 트리거가 있다는 것을 알았습니다. 동일한 수의 열이 없었습니다. 그래서이 오류가 발생했습니다. Y의 테이블 구조를 변경하면 오류가 해결되었습니다.

+0

그리고 나는 미쳤다고 생각하거나 셀 수없는 것을 잊어 버렸습니다. 내 하루를 구했다. –

관련 문제