【Mysql】记录MySQL中常见的错误代码及可能原因

发布于:2024-07-07 ⋅ 阅读:(41) ⋅ 点赞:(0)

希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~

开篇说明

梳理了一下近期大家在使用mysql中经常遇到的问题提示,有的是在navicat等连接工具上出现,有的是在代码中调用过程中出现的,做了一个常见的错误汇总和原因,作为参考,希望可以帮大家定位问题;

在这里插入图片描述

一、基础环境说明

考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境

1.1 硬件环境

MacOS Monterey 版本 12.6.8 Apple M1

1.2 软件环境

数据库版本:mysql 8.0

二、常见的问题

提示:很多问题发生的原因很多,所以注意的是,以下的所有问题出现时,我们首先要确定的就是自己的mysql服务是否正确安装,以及服务是否是启动的状态防火墙已经关闭或者开放了对应端口,然后我们再去排查原因;

2.1 连接和认证相关

  • 1045:访问被拒绝,用户名或密码错误。这通常发生在尝试连接到MySQL服务器时,提供的用户名或密码不正确。

【1】这个的大概率问题就是就是用户名或密码错误,仔细核对自己的账号和密码是否正确;

【2】端口错误的可能性也有,但是一般较少见,除非在安装的时候,大家修改过默认的端口号;或者你的计算机就有多个版本的mysql,所以端口避免冲突会有不同;

【3】root用户无法进行远程访问,这个通常发生在我们远程连接数据库的时候出现,若是自己本地的连接是不存在这个问题的;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;

FLUSH PRIVILEGES; // 刷新权限

‘%‘代表任何主机。安全的做法,是指定一个具体的IP地址或IP地址范围,而不是使用’%’,这个就根据自己的情况来定了;

然后还需要观察一下自己的配置文件中,是不是bindaddress是否设置了(0.0.0.0)

  • 1042:无效的主机名。在连接MySQL服务器时,指定的主机名无法解析或无法访问。
    【1】首先确认自己的用户名和数据库名有没有写对;
    【2】其次大概率就是权限的问题,通常开发中我们使用的账号都是root权限一般较大,所以一般不会存在这个问题,但是如果你有使用其他账号的情况下,需要确认改用户是否权限有赋予足够;

在mysql8中,我们通常这么查询某个数据库这个用户是否有权限;

// 先从这个用户的账号密码登录之后,执行下面的句子
SELECT GRANTEE, PRIVILEGE_TYPE  
FROM information_schema.TABLE_PRIVILEGES  
WHERE TABLE_SCHEMA = 'your_database_name';

如果此时提示没有权限,你就需要这么授权;

GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'your_host' IDENTIFIED BY 'your_password';

FLUSH PRIVILEGES;
  • 1043:无效连接。通常是由于连接请求未能成功建立,可能是由于网络问题或MySQL服务器未运行

【1】mysql服务没启动
【2】网络问题,不通(防火墙,ping能否通)
【3】mysql的服务地址是否正确,例如IP,端口等
【4】检查配置文件如my.cnf等,是否配置了bindaddress为指定的ip或者0.0.0.0匹配所有IP

2.2 权限相关

  • 1044:当前用户没有访问数据库的权限。用户尝试访问的数据库对其不可见或未授权;

这个错误的处理同【1045】一样处理排查即可;

  • 1227:权限不足,您无权进行此操作。尝试执行的操作需要更高的权限,但当前用户不具备这些权限。

【1】你需要拥有SUPER权限;
如果你是一个管理员,并且确信需要给某个用户SUPER权限,你可以使用具有SUPER权限的用户(如root)来授予这个权限。但是,请务必谨慎,因为SUPER权限非常强大,可能会带来安全风险

2.3 表和数据操作相关

  • 1005:创建表失败。通常是由于表名已存在、磁盘空间不足或权限问题等原因。
  • 1050:数据表已存在。尝试创建已存在的表时会发生此错误。
  • 1051:数据表不存在。尝试访问或操作不存在的表时会发生此错误。
  • 1062:字段值重复,入库失败。尝试向具有唯一键约束的列插入重复的值时会发生此错误。
  • 1146:数据表不存在。这也是一个常见的表不存在错误。

2.4 资源限制和配置相关

  • 1021:硬盘剩余空间不足,请加大硬盘可用空间。这通常发生在尝试执行需要更多磁盘空间的操作时。

  • 1037:系统内存不足,请重启数据库或重启服务器。当MySQL服务器内存不足时,可能会出现此错误。

  • 1040:已到达数据库的最大连接数,请加大数据库可用连接数。当达到MySQL服务器允许的最大连接数时,新的连接请求将被拒绝。

2.5 其他

  • 1024:读文件错误。在读取MySQL服务器上的文件时发生错误。

  • 1026:写文件错误。在写入MySQL服务器上的文件时发生错误。

  • 1216:外键约束失败,关联的外键值不存在。尝试插入或更新数据时,外键约束检查失败。

三、最后

问题处理时,需要结合自己的实际场景,并且版本,操作系统,不同的时候可能会有不同的处理方式,本文仅作参考;


网站公告

今日签到

点亮在社区的每一天
去签到