2015-07-27 3 views
0

Когда я пытаюсь выполнить это заявление я получил эту ошибку:MySQL не может создать таблицу код ошибки 1005

#1005 - Can't create table 'school2.#sql-1060_74' (errno: 150)

#Supports transactions, row-level locking, and foreign keys

Я не могу понять, что это неправильно.

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

Должно быть другое заявление для создания таблицы school2, где вы получаете эту ошибку. – Jens

+0

Возможный дубликат [MySQL Foreign Key Error 1005 errno 150] (http://stackoverflow.com/questions/4063141/mysql-foreign-key-error-1005-errno-150) –

+0

school2 - это мое имя базы данных. Я фактически выполняю его на phpmyadmin. – noshusan

ответ

0
  1. Пожалуйста, добавьте двигателя InnoDB при создании таблицы и попробовать.

  2. Также удалите On Delete из вашего запроса на изменение. Потому что вы пытаетесь установить значение null. Но вы упомянули, что некоторые из ваших полей не являются нулевыми в таблице create.

  3. Если вы видите еще ошибку, а затем запустить это,

    SHOW ENGINE INNODB STATUS;

Он скажет, почему ваши сдерживающие способности терпят неудачу.

Смежные вопросы