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

Dam*_*mon 4 mysql sql database foreign-keys

我有以下表格:

如果不存在则创建表books

book_id varchar(50) 非空,

book_title varchar(50) 非空,

courseid varchar(50) 非空,

外键 ('courseid') REFERENCES 'course'('course_id') 删除级联

) 引擎=InnoDB 默认字符集=latin1;

如果不存在则创建表course

course_id varchar(50) 非空,

year varchar(50) 非空,

section varchar(50) 非空,

主键 ( course_id)

) 引擎=InnoDB 默认字符集=latin1;

我想让courseid(在books表下)成为引用course_id(在course表下)的外键,但收到以下错误消息:

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

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

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

我使用的是 Xamp WITH Server 版本:5.5.32 - MySQL Community Server (GPL)。

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

谢谢

M K*_*aid 5

使用反引号 ` 而不是单引号也首先创建课程表然后创建书籍表,以便书籍表可以指向课程表

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 ;
Run Code Online (Sandbox Code Playgroud)

见小提琴演示