0

テーブル 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)  
)
4

4 に答える 4

2

withのテーブル定義を変更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のデモです

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 に答える