mysql - 无法在 InnoDB 中添加外键

标签 mysql

在 phpMyAdmin 中,当我尝试添加外键时发生了一些错误,并且没有说明问题所在。只是说“FK 失败”。

谁能告诉我问题出在哪里?

Error

SQL query:

ALTER TABLE `hotel` ADD FOREIGN KEY ( `type_id` ) REFERENCES `hotel`.`hotel_type` (
`id`
) ON DELETE CASCADE ON UPDATE CASCADE ;

MySQL said: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`hotel`.`#sql-cfc_e`, CONSTRAINT `#sql-cfc_e_ibfk_2` FOREIGN KEY (`type_id`) REFERENCES `hotel_type` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) 

最佳答案

确保两个表的列具有相同的数据类型:

hotel.hotel type_id int(11) unsigned # type_id column of hotel table

hotel.hotel_type id int(11) unsigned # id column of hotel_type table

如果它们不是同一类型,那么您将无法添加 FK 约束。

-- 编辑--

根据您的回复,这些列是相同的数据类型,因此这意味着您在 hotels.type_id 列中有一个无效值(值在 hotel_types 中不存在表)。检查您的 hotels.type_id 列中的值并确保它们存在于您的 hotel_types.id 列中。

关于mysql - 无法在 InnoDB 中添加外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627482/

相关文章:

sql - MySQL查询性能

mysql - 当 2 个表上不存在匹配记录时,SQL 连接 3 个表

python - 如何在 SQLAlchemy 中设置 MySQL SET 的 server_default?

php - 如何在两个不同表的两行中插入相同的UUID

mysql - Rails 5 数据库迁移错误

Mysql Order By after Group By 导致查询非常慢

mysql - SQL:从列表中提取项目并将其放入新行

php - 如何将数组插入mysql数据库?

php - 尝试从多个表中选择行时发生PHP错误

MySQL 返回值最接近特定数字的行