阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 5.7 error和warnings无具体信息显示

205次阅读
没有评论

共计 2171 个字符,预计需要花费 6 分钟才能阅读完成。

【问题描述】:

版本:MySQL 5.7.18
安装方式:二进制值包解压后直接初始化
现象:只有错误代码,无错误详情,通过 show errors 和 show warings 都无法获取 message。

mysql> USE ccadacdasc;
ERROR 1049 (42000): Unknown error 1049
mysql> SHOW ERRORS;
+——-+——+———-+
| Level | Code | Message  |
+——-+——+———-+
| Error | 1064 |          |
+——-+——+———-+
1 row in set (0.00 sec)
mysql> CREATE DATABASE mysql;
ERROR 1007 (HY000): Unknown error 1007
mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+——-+——+———–+
| Level | Code | Message  |
+——-+——+———–+
| Note  | 3084 |          |
+——-+——+———–+
1 row in set (0.00 sec)

虽然不影响使用,也可以到文档手册去查询具体情况,但总归不方便。

检查错误日志发现:
2017-06-16T06:40:03.292520Z 0 [ERROR] Can’t find error-message file ‘/data/mysql57/bin/share/errmsg.sys’. Check error-message file location and ‘lc-messages-dir’ configuration directive.

发现 errmsg.sys 找不到,并且发现在 bin 目录中查找。

【解决方案】:

检查配置文件发现:
# grep basedir my57.cnf
basedir = /data/mysql57/bin

basedir 指定的位置有误。修改一下:
basedir = /data/mysql57

重新启动,发现无报错。
再手工产生一些 error 和 warning,已经可以正常产生信息了。

mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+——-+——+————————————————————————–+
| Level | Code | Message                                                                  |
+——-+——+————————————————————————–+
| Note  | 3084 | Replication thread(s) for channel ” are already stopped.                |
+——-+——+————————————————————————–+
1 row in set (0.00 sec)

mysql> fdsfas;
ERROR 1064 (42000): 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 ‘fdsfas’ at line 1

mysql> use afdasfds;
ERROR 1049 (42000): Unknown database ‘afdasfds’

原因:该实例启动时被指定错误了 basedir 导致无法找到 errmsg.sys,所以无法显示具体 error 或 warning 的详情。
修正 my.cnf 重新启动 mysqld 即可。

这个文件在 $basedir/share 中存放名在此处为:
errmsg-utf8.txt
errmsg-utf8.txt: UTF-8 Unicode Pascal program text, with very long lines
用于存储各类 error 和 warning 的详情。

这个问题目前只存在于 MySQL 5.7 等更高版本的 MySQL 中。

在 MySQL 5.6 版本中,若因为指定了错误的 basedir,导致无法找到 errmsg.sys 时,在启动时就会报错:
2017-06-16 15:02:49 11234 [ERROR] Can’t find messagefile ‘/data/mysql-base/mysql56/bin/share/errmsg.sys’

而在 MySQL 5.7 版本中,虽然在启动时会报错并记录在错误日志中,但 mysqld 仍然是可以起来的。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/145041.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2171字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中