新しいデータベースを作成していて、テーブルを作成したい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;
外部キーを 1 つだけ (たとえば、サプライヤーに) 残しても、結果は変わりません。
ALTER TABLE
外部キーなしでテーブルを作成しようとしていて、後でそれらを追加しようとすると、同じことが起こります。ON DELETE ON UPDATE
句なしでそれらを追加できるが、それらを使用できないことに気付きました。
編集:このサーバーには多くの外部キーを使用する多くの InnoDB データベースがあるため、サーバー構成に関連する問題ではないと思います。
何か案は?