我正在创建新数据库,我想创建一个表Supplier_StockOut
:
CREATE TABLE StockOut_Supplier (
idStockOut_Supplier INT NOT NULL,
idStockOut INT NOT NULL,
idSupplier INT NOT NULL,
idTransactionType INT NOT NULL,
FOREIGN KEY (idSupplier) REFERENCES Suppliers(idSupplier)
ON DELETE SET NULL
ON UPDATE CASCADE,
FOREIGN KEY (idStockOut) REFERENCES StockOuts (idStockOut)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (idTransactionType) REFERENCES TransactionTypes(idTransactionType)
ON DELETE SET NULL
ON UPDATE CASCADE
) ENGINE=innodb DEFAULT CHARACTER SET=utf8 COLLATE=utf8_polish_ci;
结果:
ERROR 1005 (HY000): Can't create table 'stocktest.stockout_supplier' (errno: 150)
这些关键引用的所有表都已正确定义。例如:
CREATE TABLE Suppliers (
idSupplier INT NOT NULL auto_increment PRIMARY KEY,
name VARCHAR(64) NOT NULL
) ENGINE=innodb DEFAULT CHARACTER SET=utf8 COLLATE=utf8_polish_ci;
即使我只留下一个外键(例如给供应商) - 结果将保持不变。
当我尝试创建没有外键的表并ALTER TABLE
稍后添加它们时,也会发生同样的事情。我注意到我可以在没有ON DELETE ON UPDATE
子句的情况下添加它们,但不能与它们一起添加。
编辑:有很多 InnoDB 数据库在这台服务器上使用了很多外键,所以我猜这不是服务器配置相关的问题。
有任何想法吗?