use*_*729 9 mysql foreign-keys mysql-error-1005
mysql> ALTER TABLE category ADD CONSTRAINT category_parent_category_id FOREIGN KEY (parent) REFERENCES category(id);
ERROR 1005 (HY000): Can't create table 'sfnews.#sql-244_1' (errno: 150)
Run Code Online (Sandbox Code Playgroud)
DDL如下:
Create Table: CREATE TABLE `category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`parent` bigint(20) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `parent_idx` (`parent`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
为什么这是错的?
Tom*_*mas 11
应该可以自我参考.这是因为"父"是无符号的而"id"不是.将表定义id列更改为
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
Run Code Online (Sandbox Code Playgroud)
它会起作用.
关于外键的引用说明:"整数类型的大小和符号必须相同"
似乎是这里描述的相同问题
| 归档时间: |
|
| 查看次数: |
3540 次 |
| 最近记录: |