外键不在表中创建

时间:2014-07-28 12:24:54

标签: mysql sql

第一张表:

create table login(
  id int auto_increment, 
  user varchar(20), 
  pass varchar(20), 
  primary key(id)
);

使用主键创建第一个表..

第二张表:

create table check(
  cid int, 
  rid int, 
  usname varchar(20), 
  word varchar(20), 
  FOREIGN KEY(rid) REFERENCES login(id)
);

错误:

ERROR 1064 (42000): 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 'check
(cid int, rid int, usname varchar(20), word varchar(20), FOREIGN KEY(rid) R' at
line 1

3 个答案:

答案 0 :(得分:2)

问题不在于外键。 check是MySQL中的保留字。所以你需要选择另一个名字或逃避它:

create table `check`(
    cid int,
    rid int,
    usname varchar(20),
    word varchar(20),
    FOREIGN KEY(rid) REFERENCES login(id)
);

具有讽刺意味的是,尽管它是一个保留字,但实际上并没有使用它。唉,我确实希望MySQL支持check约束。

顺便说一下,here是一个SQL小提琴。

答案 1 :(得分:0)

checkMySQL中的关键词;要么用反引号括起来,`,要么选择不同的名字。

答案 2 :(得分:0)

更改表格check的名称。检查是MySQL中的保留字