check the manual that corresponds to your MySQL server version for the right syntax to use near解决办法

问题背景

网上也有类似的报错,出现这种报错的原因有很多种,我就说说我遇到的,还没搜到的🏃‍♂️🏃‍♂️🏃‍♂️

我是在写数据库关于数据库完整性那一章的实验报告时遇到的:

参照课本第5章中的例10定义新的学生表S2,为S2中定义的约束进行命名,并用alter table语句去对表S2中已定义的某个约束进行删除操作。

当时书上的例子是这样的:

CREATE TABLE S2( Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname VARCHAR(20) CONSTRAINT C2 NOT NULL, Ssex NUMERIC(3) CONSTRAINT C3 CHECK(Sage<30), Sage CHAR(2) CONSTRAINT C4 CHECK(Ssex IN ('男','女')), CONSTRAINT Student_Key PRIMARY KEY (Sno) );

但是我在Navicat上运行后就报错了:
在这里插入图片描述


问题提出

好奇,为什么我不能给完整性约束条件命名呢?😐😐😐
是因为我的MySQL版本太低了吗?(MySQL5.1)


问题解决

然后我就去MySQL的官网上查MySQL5.6的参考手册,发现关于约束这一块,在MySQL5.6的参考手册上就只有这一个外部关键约束:
在这里插入图片描述
通过观察,貌似CONSTRAINT只能定义外键约束,给外键约束赋别名
在这里插入图片描述
所以只能把CONSTRAINT去掉,只剩下CHECK短语:

CREATE TABLE S2( Sno NUMERIC(6) CHECK (Sno BETWEEN 90000 AND 99999), Sname VARCHAR(20) NOT NULL, Ssex NUMERIC(3) CHECK(Sage<30), Sage CHAR(2) CHECK(Ssex IN ('男','女')), PRIMARY KEY (Sno) );

这样就可以运行成功了。

而又看了看MySQL8.0参考手册,有了新发现,发现专门有一个检查约束
在这里插入图片描述
终于让我找到了原因
在这里插入图片描述
我那卑微的5.1向8.0低头了🤦‍♂️🤦‍♂️🤦‍♂️
所以就没法对约束进行操作了。
不过可以删除外键约束,虽然这个表格里没有,不过可以说出方法,去Navicat里面,打开:
在这里插入图片描述
可以看出他这个外键约束名是电脑给他的。
语句:ALTER TABLE selectcourse DROP selectcourse_ibfk_1;


如有问题,请私聊。


__EOF__

本文作者坤舆小菜鸡
本文链接https://www.cnblogs.com/HBU-xuhaiyang/p/13111408.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   坤舆小菜鸡  阅读(666)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示