表 ENUMSTATE 正在重新调用 ENUMCOUNTRY 但
此代码会导致以下错误:错误代码:1005。无法创建表“easylibdb1.enumstate”(errno:150)
=> 枚举国家
CREATE TABLE IF NOT EXISTS ENUMCOUNTRY(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
NAME VARCHAR(50) DEFAULT '',
SHORTNAME VARCHAR(50) DEFAULT '',
STATUS BIT DEFAULT FALSE,
PRIMARY KEY (ID)
)
=> 枚举状态
CREATE TABLE IF NOT EXISTS ENUMSTATE(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
NAME VARCHAR(50) DEFAULT '',
SHORTNAME VARCHAR(50) DEFAULT '',
STATUS BIT DEFAULT FALSE,
COUNTRYID INT,
PRIMARY KEY (ID)
FOREIGN KEY (COUNTRYID) REFERENCES ENUMCOUNTRY(ID)
)
最佳答案
将 ENUMSTATE
的表定义更改为
CREATE TABLE IF NOT EXISTS ENUMSTATE(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
NAME VARCHAR(50) DEFAULT '',
SHORTNAME VARCHAR(50) DEFAULT '',
STATUS BIT DEFAULT FALSE,
COUNTRYID INT UNSIGNED, -- < type should be UNSIGNED as PK in ENUMCOUNTRY
PRIMARY KEY (ID), -- < you're missing comma here
FOREIGN KEY (COUNTRYID) REFERENCES ENUMCOUNTRY(ID)
);
这里是SQLFiddle 演示
Using FOREIGN KEY Constraints
Corresponding columns in the foreign key and the referenced key must have similar data types. The size and sign of integer types must be the same. The length of string types need not be the same. For nonbinary (character) string columns, the character set and collation must be the same.
关于MySQL : on creating foreign key geting error no : 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079378/