我有以下表格:
如果不存在,则创建表book
(
book_id
varchar(50)不为空,
book_title
varchar(50)不为空,
courseid
varchar(50)不为空,
外键('courseid')在删除级联上引用'course'('course_id')
)ENGINE=InnoDB默认CHARSET=latin1;
如果不存在,请创建表
course_id
varchar(50)Not NULL,
年份
varchar(50)Not NULL,
section
varchar(50)不为空,
主键(course_id
)
)ENGINE=InnoDB默认CHARSET=latin1;
我想使courseid(在books表下)成为引用course_id(在course表下)的外键,但得到以下错误消息:
**#1064年的今天,您的SQL语法出现错误;查看与MySQL服务器版本对应的手册,以了解在“courseid”附近使用“course”(“course_id”)的正确语法
)引擎=第15行的InnoDB默认字符**
我厌倦了几种声明外键的语法(使用约束外键、带/不带引号等),但都不起作用。
我使用的是Xamp with Server版本:5.5.32-MySQL Community Server(GPL)。
有人能帮我解决这个问题吗?
谢谢
简单地说:
您的代码:
FOREIGN KEY ('courseid') REFERENCES 'course'('course_id') ON DELETE CASCADE
改变:
FOREIGN KEY (`courseid`) REFERENCES `course` (`course_id`) ON DELETE CASCADE
你必须先创建主键表当然(课程id),然后才应该创建参考外键表图书(课程id)。
使用反勾号代替单引号,也可以先创建课程表,然后创建图书表,这样图书表就可以指向课程表
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 ;
看小提琴演示
我是mysql新手,我正在尝试创建一个存储过程,但由于声明变量而出现语法错误。我使用的mysql版本是5.5.43,我的过程是: 我得到了这个错误: 请帮助删除此语法错误。
问题内容: 因此,当我想添加外键时出现错误。我在带有EER图模型的MySQL Workbench中添加了外键。工作台尝试添加的行是: 我得到的错误是: 我搜索了解决方案,发现括号很重要或反引号,但是由于代码是由该工具创建的,因此对我来说似乎是正确的。是什么导致错误? 问题答案: 对于任何看此的人,都可以在EER图模型窗口中设置要用于生成SQL脚本的MySQL版本。转到“编辑”,“首选项”,然后是“
我是SQL新手,正在尝试创建一个如下的模式。然而,我似乎不能正确获得成员表的外键。我试着在表创建后添加它,最初似乎工作正常,但现在当我试图添加一个测试数据行时,我得到了这个错误。 我敢肯定,这是我错过的非常愚蠢的事情,但如果有人能指出我做错了什么,那就太好了! 错误代码:1452。无法添加或更新子行:外键约束失败 (。,CONSTRAINTFOREIGN KEY()REFERENCES()) 无法
问题内容: 我在Docker容器中有一个MySQL数据库。入口点执行创建数据库的脚本和创建表的脚本。 除了一张桌子,其他所有东西都工作正常。 记录到控制台的错误是 第150行是后面的开括号 MySQL版本:8.0.3-rc-log 主机操作系统:Debian jessie 我开始考虑并且可能是保留关键字,因此我重命名了表和列,但错误仍然存在。 问题答案: @Bill Karwin在第一条评论中
我试图使用servlet将行插入到表中,当尝试使用语句(使用insertQuery1和insertQuery2)进行插入时,它执行良好,但当使用preparedstatment(使用insertPrepQuery)执行时,它抛出SQL语法错误。代码: 错误:
同时添加外键关系MySQL给出: 我有2个表,试图给外键与其他的关系,但它给下面的错误。 错误1005:无法创建表'yellowbikes.#sql-1e8_82'(errno: 121) SQL声明: 错误:运行故障回复脚本时出错。详情如下。 错误1050:表“计划”已存在 SQL声明: