【发布时间】:2016-06-17 21:05:59
【问题描述】:
当我想使用外键创建表时,我遇到了一个奇怪的问题。
请看以下结果:
mysql> CREATE TABLE IF NOT EXISTS TL_USER(
-> user_id INT(10) UNSIGNED NOT NULL PRIMARY KEY,
-> nickname VARCHAR(45) NULL
-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE IF NOT EXISTS TL_EVENT_COMMENT (
-> event_comment_id INT PRIMARY key ,
-> comment VARCHAR(45) NULL,
-> user_id INT NULL,
-> FOREIGN KEY (`user_id`) REFERENCES TL_USER (`user_id`)
-> ) ENGINE = InnoDB;
错误 1005 (HY000): 无法创建表 'TL_EVENT_COMMENT' (错误号:150)
当我将“user_id INT(10) UNSIGNED NOT NULL PRIMARY KEY”更改为“user_id INT(10) NOT NULL PRIMARY KEY”时,它可以工作。
mysql> CREATE TABLE IF NOT EXISTS TL_USER(
-> user_id INT(10) NOT NULL PRIMARY KEY,
-> nickname VARCHAR(45) NULL
-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE IF NOT EXISTS TL_EVENT_COMMENT (
-> event_comment_id INT PRIMARY key ,
-> comment VARCHAR(45) NULL,
-> user_id INT NULL,
-> FOREIGN KEY (`user_id`) REFERENCES TL_USER (`user_id`)
-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.02 sec)
问题是当我为 user_id 添加 UNSIGNED 时,如果我不添加它会出现该错误,它可以工作,谁能解释为什么 UNSIGNED 不能用于 FOREIGN KEY?
我怎样才能让它工作?
MYSQL 版本为 5.5.47-0ubuntu0.14.04.1。
【问题讨论】:
-
确实,我太粗心了!谢谢。
标签: mysql sql foreign-keys