MySQL 8.0 使用时遇到的一些报错及解决方法

本文介绍了在使用MySQL8.0过程中遇到的常见错误,包括ERROR1064(42000)的SQL语法错误,如括号匹配、逗号冗余、中英文字符切换和关键字遗忘;ERROR1822(HY000)的外键约束失败,通常由于引用的不是外表的主键;以及ERROR3619的权限级别问题,创建用户时不应使用GRANT语句。解决方案包括检查SQL语法、正确设置外键约束和使用CREATE语句创建用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

最近在完成一门课程的大作业时用到了mysql,所以就顺便入手了一些mysql8.0,当然在使用过程中也遇到了一些小问题,于是记录在此以便复习.

####运行环境说明:
->ubuntu version: 20.04
->MySql version: 8.0.27-0ubuntu0.20.04.1 (Ubuntu)


问题一:ERROR 1064 (42000)

完整问题描述:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘xxxxxx’ at line x

问题解析:
我认为这是最容易遇到的问题,发生的原因就是语法错误,再无其他

问题解决:
仔细检查语法问题,比如:
括号匹配

mysql> create table ttt (
    -> xxx char,
    -> xxxx char;
    //缺少括号

逗号冗余

mysql> create table ttt (
    -> xxx char,
    //逗号冗余
    -> );

中英文字符切换

该错误太过基础故不作示例

关键字遗忘

mysql> create test(
//缺少 table 关键字
    -> xxx char
    -> );
    

问题一虽然很简单但非常容易遇到,一定要规范自己的行文风格,避免低级报错。

此处再补充一个冷门的,非语法错误导致的1064报错原因:
在MySQL 8.0+ 版本中,数据库系统是不允许用户使用赋值语句grant来创建新用户的!!!

首先进入mysql数据库下查看user表的用户

mysql> select user from user;
+------------------+
| user             |
+------------------+
| customer         |
| damn             |
| default_1        |
| default_2        |
| debian-sys-maint |
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
9 rows in set (0.00 sec)

接下来尝试使用grant语句创建新用户new并为其赋予权限

mysql> grant all privileges on *.* to 'new'@'%' identified by '123456';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456'' at line 1
mysql> 

可以发现这里是报错了的,所以在使用MySQL8.0版本创建用户时应该使用常见的 create 语句,创建后再赋值。


问题二、ERROR 1822 (HY000)

问题完整描述:

ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint ‘xxxx’ in the referenced table ‘xxxxx’

问题解析:该问题一般是在设置新表的外键约束时出现的,原因就是外键约束引用的不是外表的主键

问题解决:重新设置外键约束,或者修改外表的主键即可


问题三、ERROR 3619

问题完整描述:

错误号:3619::符号:ER_ILLEGAL_PRIVILEGE_LEVEL; SQLSTATE:HY000
消息:为%s指定了非法特权级别

问题解析:该问题是我在为用户赋值时发生的,我先对用户赋予了select,insert权限,当赋予updata权限时发生了该错误。我查阅了很多资料,最后还是没有解决该错误,如果读者朋友对该问题有自己的见解或解决方法,还请不吝赐教!

问题解决:暂无


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值