Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MYSQL中声明外键时获取语法错误(使用innoDB)_Mysql_Sql_Database_Foreign Keys - Fatal编程技术网

在MYSQL中声明外键时获取语法错误(使用innoDB)

在MYSQL中声明外键时获取语法错误(使用innoDB),mysql,sql,database,foreign-keys,Mysql,Sql,Database,Foreign Keys,我有以下表格: 如果不存在,则创建表book( book\u idvarchar(50)不为空 book\u titlevarchar(50)不为空 courseidvarchar(50)不为空 外键('courseid')在删除级联上引用'course'('courseid') )ENGINE=InnoDB默认字符集=1 如果不存在,则创建表格课程( course\u idvarchar(50)不为空 yearvarchar(50)不为空 sectionvarchar(50)不为空 主键(课程

我有以下表格:

如果不存在,则创建表
book
(

book\u id
varchar(50)不为空

book\u title
varchar(50)不为空

courseid
varchar(50)不为空

外键('courseid')在删除级联上引用'course'('courseid')

)ENGINE=InnoDB默认字符集=1

如果不存在,则创建表格
课程
(

course\u id
varchar(50)不为空

year
varchar(50)不为空

section
varchar(50)不为空

主键(
课程id

)ENGINE=InnoDB默认字符集=1

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

**#1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在“courseid”附近使用的正确语法 参考“课程”(“课程id”)

)引擎=第15行的InnoDB默认字符**

我厌倦了几种声明外键的语法(使用约束外键、带引号/不带引号等),但都不起作用

我正在使用服务器版本为5.5.32-MySQL社区服务器(GPL)的Xamp

有人能帮我解决这个问题吗


谢谢

使用反勾号`代替单引号,首先创建课程表,然后创建图书表,以便图书表能够指向课程表

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 ;

简单地说:

您的代码:

FOREIGN KEY ('courseid') REFERENCES 'course'('course_id') ON DELETE CASCADE
FOREIGN KEY (`courseid`) REFERENCES `course` (`course_id`) ON DELETE CASCADE
更改:

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

您必须创建课程主键表(课程id),然后才应该创建参考书籍外键表(课程id)

我想我的语法问题已经解决了,但现在我遇到了以下错误:“#1452-无法添加或更新子行:外键约束失败(
testlib2
books
,约束
books\u ibfk\u 1
外键(
courseid
)引用
course
course\u id
)ON DELETE CASCADE)”编辑:语法错误已修复,但现在我得到了以下错误:“#1452-无法添加或更新子行:外键约束失败(testlib2.books,constraint books_ibfk_1外键(courseid)在删除级联上引用课程(课程id)”NVM。。修好了。必须为每个引用键添加值