반응형
errno: 150 "외부 키 제약 조건이 잘못 형성되었습니다."
다음의 셋업 스크립트를 실행하려고 하면, 150 에러가 표시됩니다.왜 그래?
server permissions가 오류를 트리거하는 것 같지만 정확한 이유는 알 수 없습니다.제가 알기로는 외국 키 제약은 모두 적절하게 매핑되어 있는 것 같습니다.나는 뭔가 명백한 것을 놓치고 있는 것 같다.
-- Setup my members database
DROP DATABASE IF EXISTS mymembers;
CREATE DATABASE IF NOT EXISTS mymembers;
/*
* The list of all members in the community
*/
DROP TABLE IF EXISTS members;
CREATE TABLE members
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
steamID3 INT NOT NULL UNIQUE,
PRIMARY KEY (id)
);
/*
* Lists all servers in operation
*/
DROP TABLE IF EXISTS servers;
CREATE TABLE servers
(
sid INT NOT NULL AUTO_INCREMENT,
sname VARCHAR(30), -- name of server (short name)
PRIMARY KEY(sid)
);
/*
* Maps a member and a server together along with a flag.
* Record (0, 12, 1, 0) indicates member 12 has flag 0 on server 1.
*/
DROP TABLE IF EXISTS serverPermissions;
CREATE TABLE serverPermissions
(
mid INT,
sid INT,
flagid INT,
PRIMARY KEY(mid, sid, flagid),
FOREIGN KEY (mid) REFERENCES members(id),
FOREIGN KEY (sid) REFERENCES servers(sid),
FOREIGN KEY (flagid) REFERENCES flags(id)
);
/*
* flags are used to give custom permissions to players.
* For example a record may be: (0, "VIP", "This play is very important")
*/
DROP TABLE IF EXISTS flags;
CREATE TABLE flags
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(10),
description VARCHAR(100),
PRIMARY KEY(id)
);
테이블 작성 순서를 변경합니다.작성해야 합니다.flags
작성 전 테이블serverPermissions
데모를 보려면 여기를 클릭하십시오.
외부 키 제약 조건을 추가하는 동안 두 테이블 모두 스토리지 유형을 InnoDb로 지정해야 합니다.두 테이블의 유형을 MyISAM에서 InnoDB로 변경합니다.
이 링크(https://mariadb.org/mariadb-innodb-foreign-key-constraint-errors/)는 외부 키를 지원하는 엔진 유형의 빠른 스냅샷을 제공합니다.
제가 알기로는 다음 MariaDB 및/또는 MySQL용 스토리지 엔진은 외부 키를 지원합니다.
InnoDB (both innodb_plugin and XtraDB)
PBXT (https://mariadb.com/kb/en/mariadb/about-pbxt/)
SolidDB for MySQL (http://sourceforge.net/projects/soliddb/)
ScaleDB (https://mariadb.com/kb/en/mariadb/scaledb/ and http://scaledb.com/pdfs/TechnicalOverview.pdf)
MySQL Cluster NDB 7.3 or later (https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-ndb-innodb-engines.html)
언급URL : https://stackoverflow.com/questions/31091657/errno-150-foreign-key-constraint-is-incorrectly-formed
반응형
'source' 카테고리의 다른 글
AWS MySQL RDS vs AWS DynamoDB (0) | 2023.01.02 |
---|---|
오브젝트 메서드 내에서 오브젝트 속성에 액세스하려면 어떻게 해야 합니까? (0) | 2023.01.02 |
문자열 개체와 문자열 리터럴의 차이 (0) | 2023.01.02 |
OS X에서 MySQL 루트 사용자 암호 설정 (0) | 2023.01.02 |
PHP의 비동기 셸 Exec (0) | 2023.01.02 |