46 mysql 客户端拿不到具体的错误信息

前言

这是最近碰到的一个问题 

同样的一个 环境的问题, 在正常的 mysql 环境会返回 具体的错误信息, 然后 在我的另外一个环境里面 只能返回一些 unknown error 之类的 十分抽象的环境

然后 我们这里 来看一下 具体的情况 我们这里从 错误的环境 往前推导

来查看 并解决这个问题

 

 

错误信息的调试

这里构造的问题是一个 Table space already exists 的问题, 在重命名表名的时候, 将表名更新为 另外一个存在 ibd 的表名, 这时候 就会抛出如下异常

 

根据错误码 查询错误信息的方式如下, 将两个 section flatmap 到 errmsgs 的错误信息序列, 然后计算偏移 获取错误信息模板, 比如 我们这里的 1025 获取到的错误信息为 “”

然后 下面直接响应的 “Unknown error $errorCode”

941092146db24e2090f6455856325118.png

 

获取到错误信息的时候, 根据 错误码以及错误信息模板 以及上下文 格式化完整的错误信息的地方如下, 这里没有获取到错误信息模板, 直接响应的是 “Unknown error $errorCode”

b9993324ddca41f88f9c1fd089568e05.png

 

然后 客户端拿到的信息如下

3ff51f117ee74313b0e165a70a402dd3.png 

 

这里两个 section 标记的是 错误码 的两个分区

第一个 section 是 [1000 – 1887], 第二个 section 是 [3000 – 3230]

f80cd003fe064fa482ca88ac536af982.png

 

 

错误信息 errmsg.sys 的初始化  

错误信息的初始化如下, 默认是在 “/usr/local/mysql/share/errmsg.sys” 的地方查询错误信息模板, 然后 在这里没有 

然后 从如上代码可以看到 错误信息 的根目录是在 lc_message_dir 的配置中

然后解决方式可以通过 复制 errmsg.sys 到指定的默认位置, 或者更新 lc_message_dir 的配置, 配置到 mysql 代码中错误信息的目录, 我们这里通过配置解决问题 

e437f1b04537498389b5ec127de2552a.png

 

配置 lc_messages_dir 如下 

5b87949a376e4646a3c534e330e07e99.png 

 

现在能够 正确读取到错误信息了 

389e0166711047a486eaa2a4d4f45c4b.png 

 

错误信息国际化配置 

通过 lc_messages_dir 和 lc_messages 来进行配置, 后者配置指定的是 语言

也可以通过 launage 来执行完整的路径, 但是 不推荐

f90ce41cf1074f30958914cebb9f81c7.png

 

路径中的 Japanese 是通过 locale 进行关联的, 这部分内容参见 sql_locale.cc

fadacceeee5446089b419620b5a1aa91.png 

国际化之后 错误信息如下

b7daf506b9e44d848b40fbeb820f33b5.png 

在配置不正确的情况下, 启动 mysql 会有如下日志, 提示的就是 没有找到错误信息的相关配置

216dbc9b267a40208855cdca79dd16ed.png 

 

 

 

 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 12:12:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 12:12:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 12:12:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 12:12:04       69 阅读

热门阅读

  1. TensorFlow系列:第三讲:MobileNetV2使用介绍

    2024-07-13 12:12:04       23 阅读
  2. MySQL上亿数据查询优化:实践与技巧

    2024-07-13 12:12:04       20 阅读
  3. Jetson-AGX-Orin gstreamer+rtmp+http-flv 推拉流

    2024-07-13 12:12:04       20 阅读
  4. Mybatis-Plus最优化持久层开发

    2024-07-13 12:12:04       18 阅读
  5. 389. 找不同

    2024-07-13 12:12:04       20 阅读
  6. Python水平怎么样才能就业?

    2024-07-13 12:12:04       49 阅读
  7. Git: fatal: cannot lock ref‘HEAD‘: Unable to create

    2024-07-13 12:12:04       25 阅读
  8. 大数据学习之 scala基础(补充)

    2024-07-13 12:12:04       24 阅读
  9. Perl中的切分艺术:深入探索split函数的神秘力量

    2024-07-13 12:12:04       22 阅读
  10. 【面试题】Golang 之Channel底层原理 (第三篇)

    2024-07-13 12:12:04       22 阅读
  11. 数据结构

    2024-07-13 12:12:04       26 阅读
  12. MySQL 面试题

    2024-07-13 12:12:04       25 阅读
  13. 【笔记】在虚拟机中输入 yum makecache报错

    2024-07-13 12:12:04       26 阅读
  14. 如何使用键盘优雅地使用浏览器

    2024-07-13 12:12:04       29 阅读