我在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数据;但我仍然得到同样的错误。
答案 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` (
...