3. MySQL 数据库的基本操作 3.11. 看懂 SQL 错误代码,提高学习效率!

您所在的位置:网站首页 mysql数据库2005错误 3. MySQL 数据库的基本操作 3.11. 看懂 SQL 错误代码,提高学习效率!

3. MySQL 数据库的基本操作 3.11. 看懂 SQL 错误代码,提高学习效率!

2024-07-07 12:14:44| 来源: 网络整理| 查看: 265

MySQL 出错时反馈的代码代表出错的原因,我们只有明白这些代码代表的意思,才能了解 MySQL 数据库的错误,找出原因,解决问题。下面介绍 MySQL 服务器和客户端中的错误代码、提示消息的生成方式和查看方法,最后还对 MySQL 中常见的错误代码做了详细说明。

MySQL 服务器端错误代码和消息

MySQL 是根据安装目录下 share 中的 errmsg.txt 文件来生成 include 下 mysqld_error.h 和 mysqld_ername.h 中的错误定义的。另外,SQLSTATE 的值也是根据 share 下 errmsg.txt 文件中的内容来生成 include 下的 sql_state.h 的。

默认情况下,服务器出错代码都是以 1 开头的,例如“1004 SQLSTATE: HY000 (ER_CANT_CREATE_FILE)”,该消息的错误代码为 1004,表示“无法创建文件”。

errmsg.txt 文件的部分内容如下:

#define ER_NO_SUCH_TABLE 1146 "Table '%-.64s.%-.64s' doesn't exist", #define ER_NONEXISTING_TABLE_GRANT 1147 "There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'", #define ER_NOT_ALLOWED_COMMAND 1148 "The used command is not allowed with this MySQL version", #define ER_SYNTAX_ERROR 1149 "You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use", #define ER_DELAYED_CANT_CHANGE_LOCK 1150 "Delayed insert thread couldn't get requested lock for table %-.64s", #define ER_TOO_MANY_DELAYED_THREADS 1151 "Too many delayed threads in use",

文件中包含的 %d 和 %ld 代表数值,%s 代表字符串。显示具体信息时,它们将被消息值取代。

例如,错误代码为 1146 的错误信息在 share 下的 errmsg.txt 中显示为“Table '%-.192s.%-.192s' doesn't exist",即“表' '%-.192s.%-.192s"不存在”。其中“%-.192s”可表示左对齐 192 个字符宽度,可理解为此处输出为占位字符串,在显示具体信息时回避字符串消息替换。

例 1

切换 test 数据库,查询数据库下有哪些数据表,SQL 语句和执行过程如下:

mysql> USE test; Database changed mysql> SHOW tables; +-------------------+ | Tables_in_test | +-------------------+ | tb_eventtest | | tb_student | | tb_student2 | | tb_student3 | | tb_student_course | | tb_students_info | +-------------------+ 6 rows in set (0.01 sec)

查询数据表 tb_student 中的记录,SQL 语句和执行过程如下:

mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+ 3 rows in set (0.06 sec)

查询数据表 tb_oldstudent 中的记录,SQL 语句和运行结果如下:

mysql> SELECT * FROM tb_oldstudent; ERROR 1146 (42S02): Table 'test.tb_oldstudent' doesn't exist

由结果可以看出,在 test 数据库中不存在 tb_oldstudent 数据库,服务器错误代码为 1146。

MySQL 客户端错误代码和消息

MySQL 是根据安装目录下 include 中的 errmsg.h 文件来生成错误代码的。

errmsg.h 文件的部分内容如下:

#define CR_NAMEDPIPESETSTATE_ERROR 2018 #define CR_CANT_READ_CHARSET 2019 #define CR_NET_PACKET_TOO_LARGE 2020 #define CR_EMBEDDED_CONNECTION_2021 #define CR_PROBE_SLAVE_STATUS 2022 #define CR_PROBE_SLAVE_HOSTS 2023 #define CR_PROBE_SLAVE_CONNECT 2024 #define CR_PROBE_MASTER_CONNECT 2025 #define CR_SSL_CONNECTION_ERROR 2026 #define CR_MALFORMED_PACKET 2027 #define CR_WRONG_LICENSE 2028

文件中 %d 和 %s 分别代表数值和字符串,和服务器端错误代码显示方式一样,在显示时它们将被消息值取代。

默认情况下,客户端出错代码都是以 2 开头的,例如错误代码为 2025(CR_PROBE_MASTER_CONNECT)的,表示连接到主服务器时出错。

常见错误代码

常见的服务器错误代码及说明如下表所示: image image 常见的客户端错误代码及说明如下所示: image



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭