当前位置: 首页 > news >正文

【MySQL】数据库常见错误及解决

目录

  • 2003错误:连接错误
    • 1251错误:身份验证错误
    • 1045错误:拒绝访问错误
    • 服务没有报告任何错误
    • net start mysql 发生系统错误 5。
  • 1064错误:语法错误
  • 1054错误:列名不存在
  • 1442错误:触发器中不能对本表增删改
  • 1303错误:使用工具创建存储过程/触发器时无需写创建这一行
  • 1292错误:类型错误
  • 1415错误:触发器不能出现 SELECT * FROM
  • 1130错误

2003错误:连接错误

错误:2003 -Can’t connect to MySQL server on ‘localhost’(10038)
解决:Navicat远程连接MySQL时,提示2003错误,可能的原因有①MySQL服务没有启动;②用户没有权限使用远程连接。③防火墙中没有配置MySQL端口(3306)。
对于第①种情况,Win+R,输入services.msc命令,打开服务,找到MySQL81(其中数字表示MySQL版本),右键启动即可。
对于第②种情况,在命令行中输入mysql -u root -p登录数据库,按照以下命令修改:

show databases; use mysql;select user,host,password from user;update user set host = '%' where user = 'root' and host = 'localhost';FLUSH PRIVILEGES;

接着退出MySQL,在命令行中输入net start mysql81(81为8.1版本)。
对于第③种情况,需要进入控制面板,找到Windows Defender防火墙,点击高级设置,点击入站规则,点击右边的新建规则,点击端口,点击下一步,选择协议类型和端口号(3306)点击下一步即可。

1251错误:身份验证错误

错误:1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。
解决:①升级navicat驱动;②把mysql用户登录密码加密规则还原成mysql_native_password。
方式②需要Win+R,输入cmd打开命令行,进入MySQL的bin目录,然后输入mysql -u root -p,输入密码登录。按照以下命令修改即可。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 FLUSH PRIVILEGES; #刷新权限

1045错误:拒绝访问错误

错误:在上述进入命令行后输入mysql -u root -p后,出现ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)报错。
原因:①MySQL的服务器停止:若MySQL服务没有启动,Win+R输入services.msc打开服务后,重启MySQL服务器。
②用户的端口号或者IP导致:若用户的端口号与IP(3306/3307)不一致,打开my.ini文件进行编辑。全部编辑替换为: port=X。
③MySQL的配置文件错误----my.ini等文件:my.ini文件误输入无效内容。
④root用户的密码错误。

服务没有报告任何错误

错误:MySQL81 服务正在启动 …
MySQL81 服务无法启动。
服务没有报告任何错误。

解决:由于之前按照其他教程在本地安装了MySQL服务,导致本机上有两个MySQL服务的冲突:
在这里插入图片描述
这种情况下,使用管理员权限运行cmd,输入mysqld --initialize,等待该指令执行完成后,重新使用管理员权限开启一个cmd,输入net stop mysql关闭mysql服务,再输入net start mysql81启动mysql81版本的服务,问题得到解决。
关闭mysql后,可打开服务管理器,将Mysql的启动类型改为禁用。

net start mysql 发生系统错误 5。

默认情况下cmd是以用户身份运行的,出现此类问题是由于没有权限。运行cmd时需要以管理员身份运行。

以管理员身份运行后再输入命令net start mysql即可。

1064错误:语法错误

错误:1064-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
解决:SQL语句语法错误,常见的是表名或字段名添加了双引号或单引号,在MySQL中需要添加反引号,这是为了区分MySQL的保留字与普通字符而引入的符号。在Navicat中添加触发器的代码,需要为字段名和表名添加反引号``(在键盘上的左上角数字1旁边)。

1054错误:列名不存在

错误:1054-Unknown column ‘XXX’ in ‘field list’
解决:该列名在数据表中不存在,可能的原因有①SQL语句中的列名写错了,②表名在数据库中不存在,③该列属于后面加上去的,选择全部列可以,单独获取报错,解决办法就是将数据表中的该列重新命名,然后保存,④数据表中的列名多了一个空格,删掉即可。

1442错误:触发器中不能对本表增删改

错误:1442-Can’t update table ‘XXX’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
解决:MySQL中触发器中不能对本表进行 insert ,update ,delete操作,以免递归循环触发。 对于update 只能用set进行操作,insert与delete只能借助第二张表才能实现需求。

1303错误:使用工具创建存储过程/触发器时无需写创建这一行

错误:1303-Can’t create a TRIGGER from within another stored routine.
解决:通过Navicat创建存储过程(或触发器)的时候,不需要写创建的这一行:CREATE PROCEDURE(或TRIGGER) XXX() ,直接在Navicat中选择即可。
在这里插入图片描述

1292错误:类型错误

错误:1292-Truncated incorrect DOUBLE value: ‘_’
解决:使用CONCAT()函数连接字段时,将’_‘这个字符串用+号与数值进行了连接,解决方案是使用CONCAT_WS()函数,其中第一个参数为’_‘,这表示将其后的字段使用’_'这个字符串隔开。

1415错误:触发器不能出现 SELECT * FROM

错误:1415 - Not allowed to return a result set from a trigger
解决:触发器不能出现 SELECT * FROM TABLE 形式的查询 ,因为其会返回一个结果集 ,但可以用SELECT INTO 来设置变量(虽然MySQL不太支持SELECT INTO语法,但是仅仅只是赋个值还是可以的)。

1130错误

错误:1130 - Host ‘XXXX’ is not allowed to connect to this MySQL server.

http://www.lryc.cn/news/205951.html

相关文章:

  • spring常见问题汇总
  • java8 Lambda表达式以及Stream 流
  • 基于Java的音乐网站管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 【蓝桥】小蓝的疑问
  • 漏洞复现-海康威视综合安防管理平台信息泄露【附Poc】
  • 【完美世界】被骂国漫之耻,石昊人设战力全崩,现在真成恋爱世界了
  • 34二叉树-BFS和DFS求树的深度
  • Android Glide判断图像资源是否缓存onlyRetrieveFromCache,使用缓存数据,Kotlin
  • 设计模式之创建型模式
  • 使用jdbc技术连接数据库
  • OpenLayers入门,快速搭建vue+OpenLayers地图脚手架项目
  • 完成比写得好更重要,先完成初稿再说
  • Spring boot 处理复杂json接收,同种类型、不同场景处理
  • 排列置换环上构造:1025T3
  • Stable diffusion的一些参数意义及常规设置
  • 成员变量、静态成员变量、局部变量、常量的内存区域
  • 网络协议--IGMP:Internet组管理协议
  • 网络安全https
  • xcode Simulator 手动安装
  • Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀
  • Monaco Editor编辑器
  • ARM | 传感器必要总线IIC
  • Mybatis中Resources和ClassLoaderWrapper
  • Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第三章 多线程服务器的适用场合与常用编程模型
  • windows下使用FFmpeg开源库进行视频编解码完整步聚
  • 如何更改eclipse的JDK版本
  • HarmonyOS第一课运行Hello World
  • 解决el-tooltip滚动时悬浮框相对位置发生变化
  • Java精品项目源码第61期汽车零件销售商城系统(代号V063)
  • Python OpenCV剪裁图片并修改对应的Labelme标注文件