在MYSQL中声明FOREIGN KEYS时出现语法错误(使用innoDB)

时间:2014-03-05 23:13:59

标签: mysql sql database foreign-keys

我有以下表格:

  

CREATE TABLE IF NOT NOT EXISTS books

     

book_id varchar(50)NOT NULL,

     

book_title varchar(50)NOT NULL,

     

courseid varchar(50)NOT NULL,

     

FOREIGN KEY('courseid')REFERENCES'course'('course_id')ON DELETE CASCADE

     

)ENGINE = InnoDB DEFAULT CHARSET = latin1;

     

CREATE TABLE IF NOT NOT EXISTS course

     

course_id varchar(50)NOT NULL,

     

year varchar(50)NOT NULL,

     

section varchar(50)NOT NULL,

     

PRIMARY KEY(course_id

     

)ENGINE = InnoDB DEFAULT CHARSET = latin1;

我想在courseid(在books表下)引用一个外键引用course_id(在课程表下),但是收到以下错误信息:

**#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在''courseid'附近使用正确的语法)     REFERENCES'course'('course_id')

)ENGINE = InnoDB DEFAULT CHARS'在第15行**

我厌倦了几种声明外键的语法(使用CONSTRAINT FOREIGN KEY,有/没有引号等),但没有效果。

我正在使用Xamp WITH Server版本:5.5.32 - MySQL社区服务器(GPL)。

有人可以帮我解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:2)

使用back-ticks`而不是单引号也首先创建课程表然后创建books表,以便books表能够指向课程表

CREATE TABLE IF NOT EXISTS course (
  course_id VARCHAR (50) NOT NULL,
  YEAR VARCHAR (50) NOT NULL,
  section VARCHAR (50) NOT NULL,
  PRIMARY KEY (course_id)
) ENGINE = INNODB DEFAULT CHARSET = latin1 ;

CREATE TABLE IF NOT EXISTS books (
  book_id VARCHAR (50) NOT NULL,
  book_title VARCHAR (50) NOT NULL,
  courseid VARCHAR (50) NOT NULL,
  FOREIGN KEY (`courseid`) REFERENCES `course` (`course_id`) ON DELETE CASCADE
) ENGINE = INNODB DEFAULT CHARSET = latin1 ;

See fiddle demo

答案 1 :(得分:0)

简单地说:

您的代码:

FOREIGN KEY ('courseid') REFERENCES 'course'('course_id') ON DELETE CASCADE

更改:

FOREIGN KEY (`courseid`) REFERENCES `course` (`course_id`) ON DELETE CASCADE

你必须创建主键表当然(course_id)然后才应该创建参考外键表书籍(courseid)