创建表上的MySQL错误1005

时间:2012-05-17 13:54:31

标签: mysql sql mysql-error-1005

我在MySQL Workbench上创建了一个新数据库,但是我遇到了很多错误。所以我尝试手动创建。但我也得到另一个错误,我无法理解发生了什么。

那是我的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。我的代码出了什么问题?

编辑:更新了代码USE数据;但我仍然得到同样的错误。

3 个答案:

答案 0 :(得分:2)

使用创建的数据库“data”。

use data;

您的数据库只需创建一次,但每次开始mysql会话时都必须选择它。如果您没有选择数据库,则表创建失败。这样你就得到错误1005。

答案 1 :(得分: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)

答案 2 :(得分:1)

您创建了数据库,但没有选择它来创建表,请尝试:

CREATE DATABASE data;

use data;

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