MySQL 150错误

时间:2012-09-17 09:25:05

标签: mysql sql

以下2个表的创建失败。有人可以帮帮我吗?

错误是MySQL:无法创建表(错误号:150)

CREATE TABLE PSODEMO.APPLICATION (
    APPLICATION_ID INT NOT NULL AUTO_INCREMENT
    , APPLICATION_TYPE VARCHAR(10)
    , APPLICATION_STATUS VARCHAR(10)
    , CREATE_DATE DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL
    , MODIFIED_DATE DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL
    , DEALER_ID INT
    , COMPANY_NAME VARCHAR(120)
    , WEBSITE VARCHAR(128)
    , EMAIL VARCHAR(64)
    , PHONE VARCHAR(32)
    , STREET VARCHAR(124)
    , CITY VARCHAR(64)
    , ZIPCODE INT NOT NULL
    , COUNTRY VARCHAR(64)
    , DEALER_STATUS VARCHAR(32)
    , REMARKS VARCHAR(128)
    , INVOICE_ID INT
    , PAYMENT_MODE VARCHAR(64)
    , INVOICE_DATE DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL
    , PAYMENT_DATE DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL
    , PAYMENT_STATUS VARCHAR(64)
    , PRIMARY KEY (APPLICATION_ID)
    , KEY ix_APPLICATION_Applicationid(aplication_id)
    , KEY ix_APPLICATION_dealerid(dealer_id)
    );

CREATE TABLE LOGIN (
    LOGIN_ID INT NOT NULL AUTO_INCREMENT
    , USERNAME VARCHAR(10) NOT NULL
    , PASSWORD VARCHAR(10) NOT NULL
    , USER_TYPE VARCHAR(1) NOT NULL
    , APPLICATION_ID_FK INT
    , DEALER_ID_FK INT
    , PRIMARY KEY (LOGIN_ID)
    , FOREIGN KEY (APPLICATION_ID_FK) REFERENCES APPLICATION(APPLICATION_ID)
    , FOREIGN KEY (DEALER_ID_FK) REFERENCES DEALER(DEALER_ID)
    , UNIQUE (USERNAME)
    );

2 个答案:

答案 0 :(得分:1)

来自MySQL Documentation

  

如果重新创建已删除的表,则必须具有定义   符合引用它的外键约束。它必须   拥有正确的列名和类型,并且必须具有索引   如前所述,引用的密钥。如果不满意,MySQL   返回错误号1005并在错误中引用错误150   消息。

答案 1 :(得分:0)

表2有这个约束

FOREIGN KEY (DEALER_ID_FK) REFERENCES DEALER(DEALER_ID)

DEALER可能不存在。您需要在DEALER表之前创建表LOGIN,因为LOGIN表引用了表DEALER_ID的{​​{1}},我认为它也是主要的表的关键。

还有一件事,在 MySQL Reserved Keywords

周围使用反引号
DEALER