mysql今天从5.6切到5.7,在测试环境中,日志是全部打印的,发现打了一个警告:
Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...' for column 'VARIABLE_VALUE' at row 478
于是,谷歌之后发现答案全都是说插入数据时编码错误,然而我并没有插入数据,只是查询数据,而且网上说的那些配置修改早就修改好了。
累觉不爱,但是本着程序员精神,蛋疼了一会儿后继续谷歌,并且研究日志,发现只要执行 SHOW VARIABLES LIKE 'XXX'的命令就会打印一个警告。
在mysql客户端也验证了这个问题,找到了原因,于是再谷歌,发现了bug report:https://bugs.mysql.com/bug.php?id=82414
[2 Aug 16:01] Lowe Ryan
Description:>SHOW CREATE TABLE INFORMATION_SCHEMA.GLOBAL_VARIABLES\G*************************** 1. row ***************************Table: GLOBAL_VARIABLES
Create Table: CREATE TEMPORARY TABLE `GLOBAL_VARIABLES` (
`VARIABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`VARIABLE_VALUE` varchar(1024) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf81 row in set (0.00sec)
When I set log_bin as follows:
log-bin=💩
It correctly sets the files on disk:-rw-rw---- 1 rlowe 1278 174B Aug 2 08:34 💩.000001
-rw-rw---- 1 rlowe 1278 174B Aug 2 08:40 💩.000002
-rw-rw---- 1 rlowe 1278 151B Aug 2 08:53 💩.000003
-rw-rw---- 1 rlowe 1278 42B Aug 2 08:53💩.index
But I cannot accurately retrieve log_bin_basename:> SHOW GLOBAL VARIABLES LIKE 'log_bin_basename';+------------------+-----------------------------------------------------------+
| Variable_name | Value |
+------------------+-----------------------------------------------------------+
| log_bin_basename | /Users/rlowe/sandboxes/rsandbox_mysql-5_6_23/master/data/ |
+------------------+-----------------------------------------------------------+
1 row in set, 1 warning (0.00sec)>SHOW WARNINGS;+---------+------+---------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------------------------+
| Warning | 1366 | Incorrect string value: '\xF0\x9F\x92\xA9' for column 'VARIABLE_VALUE' at row 1 |
+---------+------+---------------------------------------------------------------------------------+
1 row in set (0.00sec)
How to repeat:
Follow the steps above
Suggested fix:
Disallow utf8mb4 characters when setting log_bin OR change the character set of GLOBAL_VARIABLES
[2 Aug 16:20] Umesh Umesh
Hello Lowe Ryan,
Thank youforthe report.
Thanks,
Umesh
此致,敬礼
虽然没有什么用,但一种爽的感觉悠然而生,我想这就是程序员精神。