表ENUMSTATE重写ENUMCOUNTRY但是
此代码导致此错误:错误代码:1005。无法创建表'easylibdb1.enumstate'(错误号:150)
=> Enum国家
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)
)
=> Enum STATE
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)
)
答案 0 :(得分:2)
使用
更改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 强>
外键中的对应列 并且引用的键必须具有类似的数据类型。大小和标志 整数类型必须相同。字符串类型的长度不需要 是相同的。对于非二进制(字符)字符串列,该字符 设置和整理必须相同。
答案 1 :(得分:0)
您在ENUMSTATE表格中PRIMARY KEY (ID)
之后错过了逗号
答案 2 :(得分:0)
ENUMSTATE
您在PRIMARY KEY (ID)
PRIMARY KEY (ID),
外键必须具有在参考表(参考表中的主键)中定义的相同定义,并且具有相同的数据类型和大小。
COUNTRYID INT UNSIGNED
答案 3 :(得分:0)
ENUMSTATE表中的PRIMARY KEY (ID)
后面没有逗号。这就是你遇到语法错误的原因。