MySQL 外键错误 1005 errno 150:将主键解析为外键问题
MySQL 的外键约束通过引用字段来强制数据完整性在其他表中。但是,当使用主键作为外键时,可能会遇到错误 1005。当引用的表缺少引用列的可用索引时,就会出现此错误。
主键可以是外键吗键?
是的,主键也可以是外键。这是数据库设计中的常见做法,因为它确保引用表仅包含有效数据并维护关系的引用完整性。
解决错误 1005
要解决错误 1005,您需要在引用表中的引用列上创建索引。这个索引可以让MySQL高效地找到被引用的记录。以下是您在特定情况下解决问题的方法:
ALTER TABLE Immobile ADD PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`);
通过添加主键,列将自动建立索引。这可确保其他表 (Condoni) 中的外键可以引用 Immobile 表中的正确记录。
替代解决方案
如果在主表上创建索引key 不可行,可以使用复合外键代替。这意味着使用主键中的多个列作为外键引用。在这种情况下,您将创建以下外键:
ALTER TABLE Condoni ADD FOREIGN KEY (`ComuneImmobile`, `ViaImmobile`) REFERENCES Immobile (`ComuneImmobile`, `ViaImmobile`);
此复合外键将强制引用完整性,而不需要主键上的索引。
通过实现这些解决方案,您可以在数据库表之间建立所需的关系,并避免在使用主键作为外键引用时出现错误 1005。
以上是主键也可以作为外键吗?如何修复 MySQL 错误 1005?的详细内容。更多信息请关注PHP中文网其他相关文章!