在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。。修好了。必须为每个引用键添加值