MySQL 5.7.13 的一個BUG


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=utf8
1 row in set (0.00 sec)

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.00 sec)

> 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.00 sec)

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 you for the report.

Thanks,
Umesh

 

此致,敬禮

 

雖然沒有什么用,但一種爽的感覺悠然而生,我想這就是程序員精神。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM