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

MySQL-显示所有错误信息

1 需求

需求1:默认值

需求2:查询当前值

需求3:设置显示所有错误信息


2 语法


3 示例

在 MySQL 中,当执行 SQL 语句时发生的错误通常不会直接显示所有的错误信息,而是返回一个错误代码和简短的描述。但是,你可以通过几种方式获取更详细的错误信息或调试 SQL 语句。

  1. 使用 MySQL 命令行客户端:
    当你使用 MySQL 命令行客户端执行 SQL 语句时,如果发生错误,它会显示一个错误代码和简短的描述。例如:

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

    在这里,ERROR 1146 (42S02) 是错误代码,Table 'database_name.non_existent_table' doesn't exist 是错误描述。

  2. 查看 MySQL 错误日志:
    MySQL 服务器通常会将详细的错误信息记录到错误日志中。你可以通过查看 MySQL 的错误日志文件来获取更详细的错误信息。错误日志的位置取决于你的 MySQL 配置和操作系统。在 my.cnf 或 my.ini 配置文件中,你可以找到 log-error 指令,它指定了错误日志的位置。

  3. 使用 SHOW ERRORS 语句:
    在某些情况下(如使用存储过程或触发器时),你可以使用 SHOW ERRORS 语句来查看之前 SQL 语句产生的错误信息。但是,请注意,SHOW ERRORS 通常不用于普通的 SQL 查询。

  4. 使用 PHP(或其他编程语言)捕获 MySQL 错误:
    如果你在 PHP 或其他编程语言中连接 MySQL 数据库并执行 SQL 语句,你可以捕获 MySQL 产生的错误,并将它们记录到日志中或显示给用户。这通常涉及检查数据库连接函数和查询执行函数的返回值,并使用适当的错误处理机制。

    在 PHP 中,你可以使用 mysqli_error() 或 PDO::errorInfo() 函数来获取最近的 MySQL 错误信息。

  5. 启用 MySQL 的 general query log:
    虽然这不是专门用于错误信息的,但启用 general query log 可以记录所有发送到 MySQL 服务器的 SQL 语句。这有助于调试,因为它可以显示实际执行的 SQL 语句(可能包含由应用程序或中间件生成的错误或意外的 SQL)。但是,请注意,这可能会产生大量的日志数据,因此请谨慎使用。

  6. 使用第三方工具和库:
    还有一些第三方工具和库,如 Percona ToolkitMySQLTuner 和 pt-query-digest,它们可以帮助你分析 MySQL 的性能、查询和潜在问题,并提供更详细的错误信息或建议。


3.2 查询当前值 

log_error_verbosity 是 MySQL 中的一个系统变量,它用于控制错误日志(由 log-error 配置项指定的日志文件)中记录的错误信息的详细程度。这个变量在 MySQL 5.7.2 及更高版本中可用。

log_error_verbosity 可以设置为以下几个值之一:

  • 1(TERSE):只记录最少的错误信息。
  • 2(NORMAL):记录正常的错误信息,这是默认值。
  • 3(VERBOSE):记录更详细的错误信息,包括可能导致错误的查询文本(如果适用)。

你可以通过以下 SQL 语句来查看当前的 log_error_verbosity 设置:

SHOW VARIABLES LIKE 'log_error_verbosity';

要更改 log_error_verbosity 的值,你可以使用 SET GLOBAL 语句(但请注意,这只会影响当前会话和之后启动的会话,不会永久改变 MySQL 配置)。如果你希望永久改变这个设置,你需要在 my.cnf(Linux/Unix)或 my.ini(Windows)配置文件中设置它,并重启 MySQL 服务器。

例如,在 my.cnf 文件中添加或修改以下行:

[mysqld]
log_error_verbosity=3

然后重启 MySQL 服务器以使更改生效。

请注意,将 log_error_verbosity 设置为 3(VERBOSE)可能会导致错误日志中记录大量的信息,包括完整的查询文本,这可能会使日志文件迅速增长。因此,在生产环境中使用时应该谨慎考虑。


4 参考资料

搭建sql本地靶场出现的问题--无法显示SQL注入报错问题_sqli-labs靶场不显示内容-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux——Shell脚本和Nginx反向代理服务器
  • MCU常见相关术语缩写说明
  • pnpm build打包时占内溢出
  • 【 DHT11 温湿度传感器】使用STC89C51读取发送到串口、通过时序图编写C语言
  • Python 二进制求和
  • 第五章:卷-将磁盘挂载到容器
  • linux环境交叉编译openssl库,以使Qt支持https
  • (二)原生js案例之数码时钟计时
  • 使用ChatGPT来撰写和润色学术论文的教程(含最新升级开桶ChatGpt4教程)​​
  • MySQL事务管理(上)
  • C++ versions less than C++14/11 are not supported.报错
  • vscode 远程 Ubuntu 系统
  • 神经网络模型实现(训练、测试)
  • 我的创作一周年纪念日
  • Spring Boot 中使用 Resilience4j 实现弹性微服务的简单了解
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Centos6.8 使用rpm安装mysql5.7
  • Consul Config 使用Git做版本控制的实现
  • css属性的继承、初识值、计算值、当前值、应用值
  • ECS应用管理最佳实践
  • Gradle 5.0 正式版发布
  • in typeof instanceof ===这些运算符有什么作用
  • Markdown 语法简单说明
  • Puppeteer:浏览器控制器
  • rabbitmq延迟消息示例
  • supervisor 永不挂掉的进程 安装以及使用
  • Theano - 导数
  • webpack项目中使用grunt监听文件变动自动打包编译
  • Xmanager 远程桌面 CentOS 7
  • 读懂package.json -- 依赖管理
  • 面试总结JavaScript篇
  • 使用 Docker 部署 Spring Boot项目
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 小程序测试方案初探
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 正则学习笔记
  • 走向全栈之MongoDB的使用
  • 昨天1024程序员节,我故意写了个死循环~
  • ​MySQL主从复制一致性检测
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #define、const、typedef的差别
  • (23)Linux的软硬连接
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (二)Linux——Linux常用指令
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)Flink 窗口计算
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET DataGridView数据绑定说明
  • .netcore 获取appsettings
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [2024-06]-[大模型]-[Ollama]- WebUI