0

表 ENUMSTATE 正在重试 ENUMCOUNTRY 但

此代码导致此错误:错误代码:1005。无法创建表“easylibdb1.enumstate”(错误号: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)  
)
4

4 回答 4

2

更改表定义ENUMSTATEwith

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演示

使用 FOREIGN KEY 约束
外键和引用键中的对应列必须具有相似的数据类型。整数类型的大小和符号必须相同。字符串类型的长度不必相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。

于 2013-06-13T04:44:24.157 回答
0

PRIMARY KEY (ID)在 ENUMSTATE 表中缺少逗号

于 2013-06-13T04:43:51.973 回答
0

有2个错误ENUMSTATE

  1. 您在之后缺少逗号PRIMARY KEY (ID)

    PRIMARY KEY (ID),
    
  2. 外键必须具有在具有相同数据类型和大小的引用表(引用表中的主键)中定义的相同定义。

    COUNTRYID INT UNSIGNED
    
于 2013-06-13T04:52:19.993 回答
0

ENUMSTATE 表中没有逗号PRIMARY KEY (ID)。这就是您收到语法错误的原因。

于 2013-06-13T09:26:39.180 回答