2012-05-17 3 views
0

Я создавал новую базу данных на MySQL Workbench, но я получаю много ошибок. Поэтому я попытался создать вручную. Но я тоже получаю еще одну ошибку, я не понимаю, что происходит.Ошибка MySQL 1005 при создании таблицы

Это мой SQL-код:

CREATE DATABASE data; 

USE data; 

CREATE TABLE IF NOT EXISTS `TB_CHILD` (
`ID` INT NOT NULL AUTO_INCREMENT , 
`NAME` VARCHAR(250) NOT NULL , 
`STATUS` ENUM('A','I') NOT NULL , 
PRIMARY KEY (`ID`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `TB_PARENT` (
`ID` INT NOT NULL AUTO_INCREMENT , 
`TITLE` VARCHAR(250) NOT NULL , 
`CHILD` INT NOT NULL , 
`STATUS` ENUM('A','I') NOT NULL , 
PRIMARY KEY (`ID`) , 
INDEX `FK_PARENT_CHILD` (`CHILD` ASC) , 
CONSTRAINT `FK_PARENT_CHILD` 
    FOREIGN KEY (`CHILD`) 
    REFERENCES `TB_CHILD` (`ID`)) 
ENGINE = InnoDB; 

Я всегда получаю код ошибки 1005. Я использую MySQL Server 5.5. Что случилось с моим кодом?

EDIT: Обновлен с использованием кода USE данных; Но я все равно получаю ту же ошибку.

ответ

2

Вы пытаетесь создать индекс для поля, которое еще не существует:

INDEX `FK_PARENT_CHILD` (`CHILD` ASC) , 
CONSTRAINT `FK_PARENT_CHILD` 
    FOREIGN KEY (`CHILD`) 
    REFERENCES `TB_CHILD` (`ID`)) 

попытаться восстановить порядок:

CONSTRAINT `FK_PARENT_CHILD` 
    FOREIGN KEY (`CHILD`) 
    REFERENCES `TB_CHILD` (`ID`)), 
INDEX `FK_PARENT_CHILD` (`CHILD` ASC) 
+0

Это, но я все еще получаю ошибки, когда меня пытаются установить значения в таблице родителя ... но эта первая проблема решена. Спасибо! –

+0

Это не ошибка. Вы даже не можете создать этот индекс, он будет создан INNODB автоматически. – Devart

1

вы создали базу данных, но вы не выбрали его для создания таблиц, попробуйте:

CREATE DATABASE data; 

use data; 

CREATE TABLE IF NOT EXISTS `TB_CHILD` (
... 
+0

благодарственное вы, но это не проблема. Если вы выполняете код, не может быть создана только таблица Parent. Проблема в FK. Но я не знаю, что. –

2

использовать созданную базу данных «данные».

use data; 

Ваша база данных должна быть создана только один раз, но вы должны выбрать его для использования каждый раз, когда вы начинаете MySQL session.if вы не выбрали базу данных, создание таблицы не удается. Так что вы получаете ошибку 1005.