我可以看到存在约束问题,但是在这里创建外键的正确方法是什么?
mysql>
mysql> show tables;
+----------------+
| Tables_in_nntp |
+----------------+
| articles |
| newsgroups |
+----------------+
2 rows in set (0.01 sec)
mysql>
mysql> describe newsgroups;
+-----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| newsgroup | text | NO | | NULL | |
+-----------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql>
mysql> describe articles;
+--------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| subject | text | NO | | NULL | |
| content | text | NO | | NULL | |
| number | text | NO | | NULL | |
| sent | date | NO | | NULL | |
| header_id | text | NO | | NULL | |
| newsgroup_id | int(11) | NO | | NULL | |
+--------------+---------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
mysql>
mysql> ALTER TABLE articles ADD FOREIGN KEY (newsgroup_id) REFERENCES newsgroup(id);
ERROR 1005 (HY000): Can't create table 'nntp.#sql-3bf_9a' (errno: 150)
mysql>
两个表都使用 innodb。
MySql Query 浏览器生成:
ALTER TABLE `nntp`.`articles` ADD CONSTRAINT `new_fk_constraint` FOREIGN KEY `new_fk_constraint` (`newsgroup_id`)
REFERENCES `newsgroups` (`id`)
ON DELETE SET NULL
ON UPDATE SET NULL;
这会导致相同的错误。