尝试在MySQL数据库中创建外键约束时出错。
注意:我的问题似乎与:MySQL Foreign Key - Cannot Resolve Table Name Close TO相似。但是,此问题的解决方案不适合我的问题,因为我的表名和列名没有交换。
MySQL版本:5.7
我有一个名为gds
的表:
DESCRIBE gds;
+--------------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+----------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
| name | varchar(255) | NO | | NULL | |
| logo | varchar(255) | NO | | | |
+--------------------+----------------------+------+-----+---------+----------------+
我创建了一个名为super_valuations
的新表:
DESCRIBE super_valuations;
+--------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
| gds_id | int(10) unsigned | YES | | NULL | |
| name | varchar(255) | NO | | | |
+--------------+------------------+------+-----+---------+----------------+
现在,我想在super_valuations.gds_id
和gds.id
之间创建一个外键。
我尝试了以下命令:
ALTER TABLE `super_valuations`
ADD CONSTRAINT `super_valuations_gds_id_foreign`
FOREIGN KEY (`gds_id`)
REFERENCES `gds` ( `id` );
这会导致错误:
错误1215(HY000):无法添加外键约束
我尝试运行SHOW ENGINE INNODB STATUS;
,而LATEST FOREIGN KEY ERROR
部分返回:
最新外键错误
2019-06-10 10:02:53 0x7f93a0564700表dbname /#sql-1_401的外键约束错误: 外键(
gds_id
)参考gds
(id
): 无法解析接近以下名称的表名: (id
)
老实说,我无法理解问题。表gds
存在(我可以运行select * from gds
)。我的命令中有语法问题吗?