mysql语法错误

mysql语法错误,mysql,syntax,foreign-keys,Mysql,Syntax,Foreign Keys,在执行以下查询时,我得到一个错误,即第9行附近的语法中存在错误。因为我使用的是mysql workbench,所以我无法真正找出可能的错误: CREATE TABLE IF NOT EXISTS `proquotes`.`thquotes` ( `idQuotes` INT NOT NULL AUTO_INCREMENT , `vAuthorID` VARCHAR(8) CHARACTER SET 'utf8' NOT NULL , `vAuthor` VARCHAR(45)

在执行以下查询时,我得到一个错误,即第9行附近的语法中存在错误。因为我使用的是mysql workbench,所以我无法真正找出可能的错误:

CREATE  TABLE IF NOT EXISTS `proquotes`.`thquotes` (

  `idQuotes` INT NOT NULL AUTO_INCREMENT ,

  `vAuthorID` VARCHAR(8) CHARACTER SET 'utf8' NOT NULL ,

  `vAuthor` VARCHAR(45) CHARACTER SET 'utf8' NOT NULL ,

  `cQuotes` MEDIUMTEXT CHARACTER SET 'utf8' NOT NULL ,

  `cArabic` MEDIUMTEXT CHARACTER SET 'utf8' NOT NULL ,

  `vReference` VARCHAR(100) CHARACTER SET 'utf8' NOT NULL ,

  PRIMARY KEY (`idQuotes`) ,

  INDEX `vAuthorID` () ,

  CONSTRAINT `vAuthorID`

    FOREIGN KEY ()

    REFERENCES `proquotes`.`author_info` ()

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

DEFAULT CHARACTER SET = utf8;
表作者信息:

CREATE  TABLE IF NOT EXISTS `proquotes`.`author_info` (  

`vAuthorID` INT NOT NULL ,  `vAuthor` VARCHAR(45) CHARACTER 

SET 'utf8' NOT NULL ,  `nQuotes` INT NOT NULL ,  PRIMARY KEY 

(`vAuthorID`) ,  UNIQUE INDEX `vAuthorID_UNIQUE` (`vAuthorID` 

ASC) )DEFAULT CHARACTER SET = utf8;

语法错误似乎是以下位置的空括号:
索引vAuthorID()
外键()
引用proquotes.author\u info()
。这些括号应该引用一个或多个表属性

例如:

INDEX `vAuthorID` (`vAuthorID`) ,
CONSTRAINT `vAuthorID`
   FOREIGN KEY (`vAuthorID`)
   REFERENCES `proquotes`.`author_info` (`vAuthorID`)

REFERENCES
子句的最后一个括号应引用
author\u info
中的属性,而不是来自
thquotes
。因此,您可能需要相应地更改
vAuthorID

看起来您需要在
索引
关键字后的括号中添加一个列名


请参阅。

三个明显的错误是索引和外键定义中缺少字段。必须为每个字段指定一个或多个字段,否则这是一个语法错误

INDEX `vAuthorID` () ,  <--need a field here in the ()'s
CONSTRAINT `vAuthorID`
    FOREIGN KEY ()  <---another field here in the ()'s
    REFERENCES `proquotes`.`author_info` ()  <--and yet another field here in the ()'s

INDEX`vAuthorID`(),我做到了。现在它说:
ERROR 1005:无法创建表'proquotes.thquotes'(errno:150)
@fusion:您使用的是哪个MySQL版本?您可能需要在
author\u info.vAuthorID
上手动创建索引。来源:@fusion:。。。或者,可能
author\u info.vAuthorID
thquotes.vAuthorID
的数据类型不完全相同。来源:我已经用作者信息的sql查询更新了这个问题。请看一看。@fusion:好的,它看起来像新表中的
vAuthorID
thquotes
VARCHAR(8)
,但在
author\u info
表中是
INT
。它们必须是相同的数据类型。其中一个需要改变。如果要更改
thquotes
表,请尝试将
vAuthorID VARCHAR(8)字符集'utf8'非空,
替换为
vAuthorID INT非空,