Mysql errno 150.我不明白缺少什么

时间:2017-01-11 12:50:12

标签: mysql

省份表

openid_id

城市表

CREATE TABLE IF NOT EXISTS `shmarket`.`PROVINCES` (
`provinceId` VARCHAR(6) NOT NULL,
`name` VARCHAR(45) NOT NULL,
 PRIMARY KEY (`provinceId`))
 ENGINE = InnoDB
 DEFAULT CHARACTER SET = utf8
 COLLATE = utf8_unicode_ci;
Table `shmarket`.`CITIES`

当我创建用户表时,mysql显示errno 150.我检查了几次代码,但它无效。我用mysql workbench生成了这个代码,但也失败了。

1 个答案:

答案 0 :(得分:2)

如果您正在使用InnoDB引擎,那么ON DELETE SET DEFAULT就是您的问题。以下是手册的摘录:

虽然MySQL服务器允许SET DEFAULT,但它被InnoDB拒绝为无效。 InnoDB表不允许使用此子句的CREATE TABLE和ALTER TABLE语句。

您可以使用ON DELETE CASCADE或ON DELETE SET NULL,但不能使用ON DELETE SET DEFAULT。有更多信息here

如果您要关联不同类型的列,也会发生此错误,例如。源表中的int和目标表中的BigInt。

你可以运行

SHOW ENGINE INNODB STATUS