当我尝试执行此语句时出现此错误:
#1005 - 无法创建表' school2。#sql-1060_74' (错误:150)
#Supports事务,行级锁定和外键
我无法弄清楚出了什么问题。
CREATE TABLE `class` (
`class_num` varchar(50) NOT NULL ,
`sec` varchar(10) NOT NULL ,
`tmpo_no` varchar(50) NOT NULL,
PRIMARY KEY (`class_num`,`sec`));
CREATE TABLE `class_has_taken` (
`class_num` varchar(50) NOT NULL,
`sec` varchar(10) NOT NULL,
`std_id` INT NOT NULL,
`year` DATE NOT NULL);
ALTER TABLE `class_has_taken` ADD CONSTRAINT `class_has_taken_fk0` FOREIGN KEY (`class_num`) REFERENCES `class`(`class_num`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `class_has_taken` ADD CONSTRAINT `class_has_taken_fk2` FOREIGN KEY (`sec`) REFERENCES `class`(`sec`) ON DELETE CASCADE ON UPDATE CASCADE;
答案 0 :(得分:0)
请在创建表时添加Engine InnoDB并尝试。
同时从您的alter query中删除On Delete。因为您尝试设置null。但是你提到你的一些字段在create table中不为null。
如果您仍然看到错误,请运行此
SHOW ENGINE INNODB状态;
它会说明你的约束失败的原因。