MySQL无法创建表错误代码1005

时间:2015-07-27 07:37:57

标签: mysql database

当我尝试执行此语句时出现此错误:

  

#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;

1 个答案:

答案 0 :(得分:0)

  1. 请在创建表时添加Engine InnoDB并尝试。

  2. 同时从您的alter query中删除On Delete。因为您尝试设置null。但是你提到你的一些字段在create table中不为null。

  3. 如果您仍然看到错误,请运行此

    SHOW ENGINE INNODB状态;

  4. 它会说明你的约束失败的原因。