以下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)
);
答案 0 :(得分:1)
如果重新创建已删除的表,则必须具有定义 符合引用它的外键约束。它必须 拥有正确的列名和类型,并且必须具有索引 如前所述,引用的密钥。如果不满意,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