작성 테이블 쿼리에서 외부 키 제약 조건을 작성하려고 할 때 SQL 구문 오류 1064
다음 쿼리를 사용하여 두 개의 테이블을 만들려고 합니다.
DROP TABLE IF EXISTS person;
CREATE TABLE person (
PRIMARY KEY (person_id),
person_id INT NOT NULL AUTO_INCREMENT
)
ENGINE InnoDB CHARSET utf8 COLLATE utf8_unicode_ci
COMMENT "A list of people.";
DROP TABLE IF EXISTS logon;
CREATE TABLE logon (
PRIMARY KEY (logon_id),
logon_id INT NOT NULL AUTO_INCREMENT,
person_id INT NOT NULL,
UNIQUE INDEX person_id (person_id),
CONSTRAINT fk_logon_has_person
FOREIGN KEY person_id REFERENCES person (person_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,
passwd CHAR(60) NOT NULL
)
ENGINE InnoDB CHARSET utf8 COLLATE utf8_unicode_ci
COMMENT "Available logins for people.";
HeidiSQL에서 이 쿼리를 실행하면 다음과 같은 오류가 발생합니다.
/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'REFERENCES person (person_id)
ON UPDATE CASCADE
ON' at line 7 */
외래 키 제약 부분을 완전히 제거했고 쿼리는 잘 실행됩니다.
그런 다음 HeidiSQL에 외부 키를 수동으로 추가했고, 이를 통해 다음과 같은 쿼리가 생성되었습니다.
ALTER TABLE `logon` ADD CONSTRAINT `fk_logon_has_person` FOREIGN KEY (`person_id`) REFERENCES `playground`.`person` (`person_id`) ON UPDATE CASCADE ON DELETE RESTRICT;
생성 테이블 쿼리의 제약 조건을 구문(ADD 이후부터는 's로) 대체하려고 했지만 여전히 오류가 나타납니다.
또한 ON UPDATE/DEELETE 부분을 제거하고 로그온 테이블의 person_id 열 이름을 다른 것으로 변경하여 사용자 테이블의 열과 모호하지 않도록 했지만 운이 없었습니다.
MariaDB의 문서를 살펴보니 구문이 정확해 보입니다.이제 왜 이게 안 되는지 모르겠어요.
무슨 생각 있어요?
MariaDB v10.4.12와 HeidiSQL v11.0.0.5919를 사용하고 있습니다.
팬시팬츠는 댓글로 다음과 같이 답했습니다.
당신의
CREATE TABLE
문장은 열 주위에 괄호를 붙입니다.FOREIGN KEY (person_id) REFERENCES
언급URL : https://stackoverflow.com/questions/63655765/sql-syntax-error-1064-when-trying-to-create-a-foreign-key-constraint-in-a-create
'source' 카테고리의 다른 글
Laravel - @yield가 비어 있는지 확인합니다. (0) | 2023.09.12 |
---|---|
Oracle SQL: IN 절 내에서 1000개 이상의 항목을 사용하는 방법 (0) | 2023.09.12 |
'xmlhttp.setRequest'란 무엇입니까?Header();'와 어떤 상황에서 사용됩니까? (0) | 2023.09.12 |
스프링 부트 3에서 플라이웨이 마이그레이션을 찾을 수 없음 (0) | 2023.09.12 |
자바스크립트를 사용하여 HTML5 데이터리스트를 새로 고치려면 어떻게 해야 합니까? (0) | 2023.09.07 |