mysql - mysql语法错误

标签 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) 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;

最佳答案

语法错误似乎是空括号:INDEX vAuthorID ()FOREIGN KEY ()REFERENCES proquotes.author_info ()。这些括号应该引用一个或多个表属性。

例如:

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

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

关于mysql - mysql语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609556/

相关文章:

sql - 在 PostgreSQL 中删除带有外键的行

MySQL执行多条SQL语句得到一个结果

mysql - 如何从一个 mysql::Conn 创建多个准备好的语句?

mysql - 在列后添加新列并定义默认值

Java Derby Apache 表/ View 不存在

mysql - 我需要跨多个表继承外键吗?

python - 如何在 Theano 中进行 0/1 子集化?

c - "int main (vooid)"?这是如何运作的?

php - 这个语法在 php : if ( $matches->match_is_editable( $ts ) ) 中意味着什么

sql - SQL-语法错误(PK和FK问题)