0

我在 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 数据更新;但我仍然得到同样的错误。

4

3 回答 3

2

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

use data;

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

于 2012-05-17T14:02:05.800 回答
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)
于 2012-05-17T14:27:59.193 回答
1

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

CREATE DATABASE data;

use data;

CREATE  TABLE IF NOT EXISTS `TB_CHILD` (
...
于 2012-05-17T13:58:14.247 回答