【问题标题】:#1005 - Cant create table... (errno: 150)#1005 - 无法创建表...(错误号:150)
【发布时间】:2014-03-20 18:34:38
【问题描述】:

我的所有主键和删除表的顺序都正确。

我基本上希望 stockID 成为我的退款表中的外键。

我的架构看起来像这样...

CREATE TABLE refunds (
refundID SMALLINT AUTO_INCREMENT,
stockID SMALLINT,
refundDate DATE,
FOREIGN KEY (stockID) REFERENCES tblStock(stockID),
PRIMARY KEY (refundID)
);

CREATE TABLE tblStock (
stockID SMALLINT AUTO_INCREMENT,
stockName VARCHAR(60),
StockNumbers SMALLINT
);

【问题讨论】:

  • 所以您是先创建refunds,然后再创建tblStock?如果这是真的,请先尝试tblStock,然后再尝试refunds

标签: mysql sql errno


【解决方案1】:

当为外键引用引用另一个表时,该表需要已经存在。而且,被引用的列应该是主键。试试这个:

CREATE TABLE tblStock (
  stockID SMALLINT AUTO_INCREMENT PRIMARY KEY,
  stockName VARCHAR(60),
  StockNumbers SMALLINT
);

CREATE TABLE refunds (
  refundID SMALLINT AUTO_INCREMENT,
  stockID SMALLINT,
  refundDate DATE,
  FOREIGN KEY (stockID) REFERENCES tblStock(stockID),
  PRIMARY KEY (refundID)
);

【讨论】:

  • 我不明白您评论中的问题。也许你应该问另一个问题(因为它似乎与这个问题无关),并举一个很好的例子来说明你想要完成的事情。
【解决方案2】:
FOREIGN KEY (stockID) REFERENCES tblStock(stockID)

正在引用一个尚不存在的表。先创建tblStock

【讨论】:

    【解决方案3】:

    您正在引用一个不存在的表。首先创建它。

    此外,您还需要索引您正在引用的键。确保外键中引用的任何值确实存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2012-02-19
      • 2020-04-10
      • 2013-07-22
      • 2017-04-09
      • 2016-10-12
      • 1970-01-01
      相关资源
      最近更新 更多