2015-03-03 43 views
0

我试图导入My​​SQL工作台创建成phpMyAdmin的(WAMP服务器),当我尝试导入它,我得到一个数据库错误:错误121不能创建表

MySQL said: Documentation 
#1005 - Can't create table '.\mydb\team.frm' (errno: 121) 

下面是执行SQL脚本

-- MySQL Script generated by MySQL Workbench 
-- 03/03/15 13:06:58 
-- Model: New Model Version: 1.0 
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; 

-- ----------------------------------------------------- 
-- Schema mydb 
-- ----------------------------------------------------- 
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ; 
USE `mydb` ; 

-- ----------------------------------------------------- 
-- Table `mydb`.`Team` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Team` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`TeamName` VARCHAR(45) NOT NULL, 
`GoverningBody` VARCHAR(45) NOT NULL, 
`Country` VARCHAR(45) NOT NULL, 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Competitor` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Competitor` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`FirstName` VARCHAR(45) NOT NULL, 
`Surname` VARCHAR(45) NOT NULL, 
`Age` INT NOT NULL, 
`Nationality` VARCHAR(45) NOT NULL, 
`Title` VARCHAR(45) NOT NULL, 
`ContactNumber` INT NOT NULL, 
`team_id` DATETIME NOT NULL, 
    PRIMARY KEY (`id`), 
    INDEX `TeamID_idx` (`team_id` ASC), 
    CONSTRAINT `TeamID` 
    FOREIGN KEY (`team_id`) 
    REFERENCES `mydb`.`Team` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Card` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Card` (
`id` INT NOT NULL, 
`referred_as` VARCHAR(45) NULL, 
`IssueDate` DATE NOT NULL, 
`ExpiryDate` DATE NOT NULL, 
`Status` ENUM('Active','Expired','Lost') NOT NULL, 
`competitor_id` INT NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `CompetitorID_idx` (`competitor_id` ASC), 
CONSTRAINT `CompetitorID` 
FOREIGN KEY (`competitor_id`) 
REFERENCES `mydb`.`Competitor` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Venue` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Venue` (
`id` INT NOT NULL, 
`referred_as` VARCHAR(45) NULL, 
`Stadium` VARCHAR(45) NOT NULL, 
`Location` VARCHAR(45) NOT NULL, 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Fixture` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Fixture` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`Time` TIME NOT NULL, 
`Date` DATE NOT NULL, 
`Type` VARCHAR(45) NOT NULL, 
`venue_id` INT NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `VenueID_idx` (`venue_id` ASC), 
CONSTRAINT `VenueID` 
FOREIGN KEY (`venue_id`) 
REFERENCES `mydb`.`Venue` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Authorisation` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Authorisation` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`fixture_id` INT NOT NULL, 
`card_id` INT NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `FixtureID_idx` (`fixture_id` ASC), 
INDEX `CardID_idx` (`card_id` ASC), 
CONSTRAINT `FixtureID` 
FOREIGN KEY (`fixture_id`) 
REFERENCES `mydb`.`Fixture` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION, 
CONSTRAINT `CardID` 
FOREIGN KEY (`card_id`) 
REFERENCES `mydb`.`Card` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Log` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Log` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`card_id` INT NOT NULL, 
    `venue_id` INT NOT NULL, 
`LogTime` TIME NOT NULL, 
`LogDate` DATE NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `CardID_idx` (`card_id` ASC), 
INDEX `VenueID_idx` (`venue_id` ASC), 
CONSTRAINT `CardID` 
FOREIGN KEY (`card_id`) 
REFERENCES `mydb`.`Card` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION, 
CONSTRAINT `VenueID` 
FOREIGN KEY (`venue_id`) 
REFERENCES `mydb`.`Venue` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


SET [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS; 
+0

变化'TEAM_ID DATETIME NOT NULL,'来'TEAM_ID INT NOT NULL,' – 2015-03-03 13:32:27

+0

做到了,不幸的是我仍然得到同样的错误 – MikeyD 2015-03-03 13:41:48

+0

还有像其他使用相同的索引名称或约束名其他几个错误已在前表中定义的表。 **例子**'Authorisation'和'Log'表中的'CardID_idx'。检查其他人。 – 2015-03-03 13:45:01

回答

1

结交意见修改上述工作对我来说(在DATETIMEINT,使独特的约束和索引名)。作为一种安全的做法,在我们的组织中,我们始终将我们的索引/约束命名为(table1Identifier)_(table2Identifier)_(constraintType) ...所以类似Log_Card_idxAuth_Fixture_FK。只是一个想法。

-- MySQL Script generated by MySQL Workbench 
-- 03/03/15 13:06:58 
-- Model: New Model Version: 1.0 
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; 

-- ----------------------------------------------------- 
-- Schema mydb 
-- ----------------------------------------------------- 
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ; 
USE `mydb` ; 

-- ----------------------------------------------------- 
-- Table `mydb`.`Team` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Team` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`TeamName` VARCHAR(45) NOT NULL, 
`GoverningBody` VARCHAR(45) NOT NULL, 
`Country` VARCHAR(45) NOT NULL, 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Competitor` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Competitor` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`FirstName` VARCHAR(45) NOT NULL, 
`Surname` VARCHAR(45) NOT NULL, 
`Age` INT NOT NULL, 
`Nationality` VARCHAR(45) NOT NULL, 
`Title` VARCHAR(45) NOT NULL, 
`ContactNumber` INT NOT NULL, 
`team_id` DATETIME NOT NULL, 
    PRIMARY KEY (`id`), 
    INDEX `TeamID_idx` (`team_id` ASC), 
    CONSTRAINT `TeamID` 
    FOREIGN KEY (`team_id`) 
    REFERENCES `mydb`.`Team` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Card` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Card` (
`id` INT NOT NULL, 
`referred_as` VARCHAR(45) NULL, 
`IssueDate` DATE NOT NULL, 
`ExpiryDate` DATE NOT NULL, 
`Status` ENUM('Active','Expired','Lost') NOT NULL, 
`competitor_id` INT NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `CompetitorID_idx` (`competitor_id` ASC), 
CONSTRAINT `CompetitorID` 
FOREIGN KEY (`competitor_id`) 
REFERENCES `mydb`.`Competitor` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Venue` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Venue` (
`id` INT NOT NULL, 
`referred_as` VARCHAR(45) NULL, 
`Stadium` VARCHAR(45) NOT NULL, 
`Location` VARCHAR(45) NOT NULL, 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Fixture` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Fixture` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`Time` TIME NOT NULL, 
`Date` DATE NOT NULL, 
`Type` VARCHAR(45) NOT NULL, 
`venue_id` INT NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `VenueID_idx` (`venue_id` ASC), 
CONSTRAINT `VenueID` 
FOREIGN KEY (`venue_id`) 
REFERENCES `mydb`.`Venue` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Authorisation` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Authorisation` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`fixture_id` INT NOT NULL, 
`card_id` INT NOT NULL, 
PRIMARY KEY (`id`), 
INDEX `Auth_FixtureID_idx` (`fixture_id` ASC), 
INDEX `Auth_CardID_idx` (`card_id` ASC), 
CONSTRAINT `Auth_FixtureID` 
FOREIGN KEY (`fixture_id`) 
REFERENCES `Fixture` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION, 
CONSTRAINT `Auth_CardID` 
FOREIGN KEY (`card_id`) 
REFERENCES `Card` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`Log` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`Log` (
`id` INT NOT NULL AUTO_INCREMENT, 
`referred_as` VARCHAR(45) NULL, 
`card_id` INT NOT NULL, 
    `venue_id` INT NOT NULL, 
`LogTime` TIME NOT NULL, 
`LogDate` DATE NOT NULL, 
PRIMARY KEY (`id`), 
    INDEX `Log_CardID_idx` (`card_id` ASC), 
INDEX `Log_VenueID_idx` (`venue_id` ASC), 
CONSTRAINT `Log_CardID` 
FOREIGN KEY (`card_id`) 
REFERENCES `mydb`.`Card` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION, 
CONSTRAINT `Log_VenueID` 
FOREIGN KEY (`venue_id`) 
REFERENCES `Venue` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


SET [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS;