更新:抱歉,这是因为我忘记将 UNSIGNED 属性添加到 lang_id 列。
原文:我正在尝试在 MySQL 中创建一个带有外键的表。
我收到此错误:#1005 - 无法创建表 'xy.trans' (errno: 150)
以下创建语句有什么问题吗?
CREATE TABLE IF NOT EXISTS `lang` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`code` CHAR(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `trans` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`something` TEXT NOT NULL,
`lang_id` INT NULL,
PRIMARY KEY (`id`),
INDEX `index_trans_lang` (`lang_id` ASC),
CONSTRAINT `fk_trans_lang`
FOREIGN KEY (`lang_id` )
REFERENCES `lang` (`id` )
ON DELETE SET NULL
ON UPDATE CASCADE
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的问题,我最终通过检查所引用的两个字段的字段类型来解决它 - 它们必须是完全相同的类型- 一直到“Not NUll”和“未签名”设置...
在您原来的帖子中,“lang”表的“id”字段定义为“INT UNSIGNED NOT NULL”,而“trans”表的“lang_id”字段定义为“INT NULL”...
归档时间: |
|
查看次数: |
13005 次 |
最近记录: |