2012-05-17 71 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服务器5.5。我的代码有什么问题?

编辑:用代码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

That'it,但我仍然遇到错误,当我试图在父表上设置值...但第一个问题已解决。谢谢! –

+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

相关问题