【问题标题】:Create table error in MySQLMySQL建表报错
【发布时间】:2013-04-06 01:34:09
【问题描述】:

任何想法为什么我不能创建 Clinical_QUestions 表?

CREATE  TABLE IF NOT EXISTS `test`.`Questions` (
`QuestionID` INT NOT NULL ,
`Question` VARCHAR(45) NULL ,
`VersionNumber` INT NULL ,
`Core` TINYINT(1) NULL ,
PRIMARY KEY (`QuestionID`) )
ENGINE = InnoDB;    

我无法创建此表

CREATE  TABLE IF NOT EXISTS `test`.`Clinical_Questions` (
`ClinicalID` INT NOT NULL ,
`QuestionID` INT NULL ,
`Effective Week` INT NULL ,
PRIMARY KEY (`ClinicalID`) ,
INDEX `QuestionID_idx` (`QuestionID` ASC) ,
CONSTRAINT `QuestionID`
FOREIGN KEY (`QuestionID` )
REFERENCES `test`.`Questions` (`QuestionID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `ClinicalID`
FOREIGN KEY (`ClinicalID` )
REFERENCES `test`.`Clinical` (`ClinicalID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

错误 1005 (HY000): 无法创建表 'certestdb.Clinical_Questions' (errno: 121)

CREATE  TABLE IF NOT EXISTS `test`.`Overall_Week_Rating` (
`ClinicalID` INT NOT NULL ,
`Instructor_Rating` INT NULL ,
`DateTime_Instructor_Rating` DATETIME NULL ,
`Student_Rating` INT NULL ,
`DateTime_Student_Rating` DATETIME NULL ,
PRIMARY KEY (`ClinicalID`) ,
CONSTRAINT `UserID`
FOREIGN KEY (`ClinicalID` )
REFERENCES `test`.`Clinical` (`ClinicalID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

【问题讨论】:

  • 您的 MySQL 用户是否允许您创建表?如果你删除架构名称certestdb,那你可以创建它吗?
  • 是的,我已经创建了 8 个表

标签: mysql sql database-schema


【解决方案1】:

如果INDEX,声明中某处的CREATE TABLE 语句中有错误。您应该从索引部分中删除 ASC

INDEX `Section_idx` (`Question_Section`)

会出现的第二个问题是您没有在FOREIGN KEY 约束上定义键,

CONSTRAINT cons_EffectiveDate
    FOREIGN KEY (`Effective Date`)                -- add column name
    REFERENCES `certestdb`.`Section` (columnHere) -- add also column name
    ON DELETE NO ACTION
    ON UPDATE NO ACTION

【讨论】:

  • 完整的错误信息是什么?
  • certestdb.Overall_Week_Rating在哪里?
  • 你能添加Overall_Week_Rating的结构吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
相关资源
最近更新 更多