【问题标题】:Table keys error in MySQL SyntaxMySQL 语法中的表键错误
【发布时间】:2016-02-22 00:11:41
【问题描述】:

有人可以帮我解决我的错误吗?

-- Create ordered
CREATE TABLE ordered(
orderID TINYINT UNSIGNED AUTO_INCREMENT,
total_cost DECIMAL(10,2),
customerID TINYINT UNSIGNED,
offercode VARCHAR(15),
CONSTRAINT ordered_pk PRIMARY KEY (orderID)
CONSTRAINT ordered_customerID_fk FOREIGN KEY (customerID) REFERENCES customer(customerID) 
    ON UPDATE CASCADE
CONSTRAINT ordered_offercode_fk FOREIGN KEY (offercode) REFERENCES offer(offercode)
    ON UPDATE CASCADE
);


DESCRIBE ordered;



-- Create line item
CREATE TABLE line_item(
item_number TINYINT UNSIGNED,
orderID TINYINT UNSIGNED,
quantity TINYINT,
shipping_amount DECIMAL(6,2)
CONSTRAINT line_item_pk PRIMARY KEY (item_number, orderID)
CONSTRAINT line_item_item_number_fk FOREIGN KEY (item_number) REFERENCES item(item_number)
    ON UPDATE CASCADE,
CONSTRAINT line_item_orderID_fk FOREIGN KEY (orderID) REFERENCES ordered(orderID)
    ON UPDATE CASCADE
    ON DELETE CASCADE
);

DESCRIBE line_item;

我的 customerID 外键的 ORDERED 表出现错误,我的主键的 line_item 表出现错误。

谢谢!

【问题讨论】:

  • 不是说只能有一个自动列,而且必须定义为key。
  • 我不明白你的意思

标签: mysql error-handling syntax-error


【解决方案1】:

您的第一个错误是因为customer 表不存在。

第二个错误是因为这行shipping_amount DECIMAL(6,2),在结尾加逗号shipping_amount DECIMAL(6,2),

即使你认为你会从主键错误中走出来,你也会面临item表错误,因为它不存在。

【讨论】:

  • 抱歉,我没有包括我有多个其他表未在此处列出,客户在其中。所以客户确实存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 2016-02-07
  • 1970-01-01
相关资源
最近更新 更多