2016-11-19 1 views
1

내 데이터베이스 과정 프로젝트에 대한 일부 기본 CREATE TABLE 문을 실행하려고하는데 이상한 오류가 발생합니다. MySQL 만들기 테이블 문 이상한 오류

enter image description here

나는 그것을 잘 실행 테이블 증명할를 만들 때,하지만 같은 구문을 사용하여 다음 테이블, 주문을 만들려고 할 때, 그것은 작동하지 않습니다.

또한이 테이블 Items를 만들려고 할 때 errno : 150이 생깁니다. 외장 키 생성과 관련이 있다고 생각하지만 확실하지 않습니다. 여기에 대한 스크린 샷이 있습니다.

enter image description here

내가 MySQL은 그래서 어떤 조언을 크게 감상 할 수 사용에 상당히 새로운 오전, 감사합니다.

+1

@LSerni 고맙습니다. 그게 그 문제를 해결했습니다. 하하. 그러나 errno 150에 대해서는 확실하지 않습니다. – Biggytiny

+1

이미지를 사용하여 텍스트 콘텐츠를 게시하지 마십시오. 명령 창에서 복사하여 여기에 텍스트를 붙여 넣을 수 있습니다. 텍스트는 훨씬 읽기 쉽고, 불필요한 이미지는 모바일 장치를 사용하는 독자에게 어려움을줍니다. 또한 솔루션에서 도움이 될 때 사용할 이미지의 텍스트를 복사 할 수 없습니다. 이미지 사용을 피하는 더 많은 이유가 있습니다. [이 메타 게시물] (http://meta.stackoverflow.com/a/285557/62576)의 목록을 볼 수 있습니다. 이미지는 문제를 시연 할 다른 방법이 없을 때만 사용해야하며, 여기서는 그렇지 않습니다. 감사. –

답변

1

Order 테이블의 오류는 ORDER가 예약어로 인해 발생합니다. 역 따옴표로 'Order'로 지정할 수 있지만, 다른 이름을 선택하는 것이 좋습니다.

오류 150은 외래 키와 관련이 있습니다. 키는 절대적으로 동일해야 - 동일한 정의하거나, FK는 150

또한 오류와 함께 실패합니다 가능한 그 키 정의와 인덱스 또는 하나가 있어야합니다 호환 (the comment on the MySQL manual page에서 카이 바쿠의 예 참조) . 다른 순서로 색인 된 동일한 필드는 실패합니다.

먼저 시작 키 테이블에 키가 정의되어 있는지 확인하십시오. 예를 들어 :

test1 varchar(50) not null 
test2 varchar(50) 

호환되지 않을 것입니다. 나는 다른 정렬이라도 FK를 킬로그램에서 꺼내기에 충분하다고 생각한다. (그러나 나는 이것을 체크하지 않았다.) 나는 내 나머지 쓰라린 사람들로부터 확신 할 수있다. un 경험).

UPDATE : 나는 당신이 InnoDB의 테이블을 사용하고 SHOW ENGINE INNODB STATUS을 실행하면 나오는 선전이 FK이 실패한 이유의 더 나은 설명, 위쪽에서 어딘가에 약 1/3을 포함, 언급하는 것을 잊었다.