省份表
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生成了这个代码,但也失败了。
答案 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