我创建了一个名为" Payments"后来才意识到,我需要更改其2列的名称和数据类型。我放弃了桌子并希望再次创建它 - 但现在我收到了错误消息:"无法创建表格' dev_datenbank.payment' (错误:150)"
CREATE TABLE Payment(
payment_id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
payment_gemeindeid INTEGER NOT NULL,
payment_initiator TIMESTAMP,
payment_zyklus INTEGER,
payment_received BOOLEAN DEFAULT false
);
ALTER TABLE Payment ADD FOREIGN KEY(payment_gemeindeid) REFERENCES Gemeinde(gemeinde_id);
我在这里看了类似的问题,但我还没有找到解决方案。大多数情况下,当其他人遇到此问题时,它与FK列上具有不同数据类型的表有关。但就我而言,两者都是INTEGER。 此外,所有列的数据库类型都是' InnoDB'。
我假设没有正确地从MySQL中删除外键约束。我在information_schema中检查了表KEY_COLUMN_USAGE,但我看不到任何遗留在这里。
另一个表创建如下:
CREATE TABLE Gemeinde
(gemeinde_id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
gemeinde_name VARCHAR(50) NOT NULL,
gemeinde_amt INTEGER,
gemeinde_status INTEGER NOT NULL DEFAULT 1,
gemeinde_info VARCHAR(512)
);
答案 0 :(得分:0)
在将payment_gemeindeid用作外键之前,先在payment_gemeindeid上创建一个索引。
答案 1 :(得分:0)
我将XAMPP从旧版本(5.0.x)更新到更新版本(5.5.30)后,我遇到的问题就消失了。现在我可以按预期删除重新创建的表。
无论如何,索引我的外键的提示确实很有用,我将从现在开始这样做。我之前从未关注过这个问题,因为我的数据库很小。谢谢你的帮助。
通过以下讨论阅读有助于我对此有更多的了解:Does a foreign key automatically create an index?