【问题标题】:I get an MYSQL error #1064 when add foreign key constraint添加外键约束时出现 MYSQL 错误 #1064
【发布时间】:2011-10-21 18:07:11
【问题描述】:

我不断收到这个 sql 错误

"#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Option (OptionId)' at line 1"

当我尝试将问题表中的 OptionId 字段的外键添加到 Option 字段中的 OptionId(pk) 字段时。我不明白为什么我一直收到错误,因为我看不出它有什么问题。

下面是使用 ALTER TABLE 的外键约束:

ALTER TABLE Question ADD CONSTRAINT FK_OptionId FOREIGN KEY (OptionId) REFERENCES Option (OptionId)

表名和语法正确,我通过仔细检查确定。

为什么它不起作用?

【问题讨论】:

  • #1064 似乎是涉及约束的通用 mysql 消息。我在尝试在现有表上创建外键时得到它(生锈!)。你的问题提醒我,我必须改变表。所以我投票给你。谢谢!

标签: mysql database alter


【解决方案1】:

option 是 MySQL 中的 reserved word,必须用反引号括起来。

ALTER TABLE Question
    ADD CONSTRAINT FK_OptionId FOREIGN KEY (OptionId)
    REFERENCES `Option` (OptionId)

【讨论】:

  • 非常感谢,不知道 option 已经是保留字了,谢谢
  • “`”字符还允许您在命名变量和表时使用更广泛的字符集,包括空格。作为风格和程序的问题,我宁愿不使用它(“`”)并让 MySQL 为我检查名称完整性(如果您将数据库移植到另一个数据库引擎,这将变得非常必要)。荣誉 MichaelMior
猜你喜欢
  • 2019-01-25
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多