SQLyog v11.24查詢MySQL5.6.24中文亂碼的解決方法

本問題在網上查找了半天,沒有找到一個解決辦法,最後我本身使用了一個小技巧攻克了。html

轉載請標明出處:
http://blog.csdn.net/ouyida3/article/details/46606689
本文出自:【ouyida3的博客mysql

這裏寫圖片描寫敘述

解決方法,運行命令:linux

SET character_set_results = gbK;

這裏寫圖片描寫敘述

具體可參考:
百度知道里的回答
這個回答中,sql

SET character_set_client = gbK; 
SET character_set_results = gbK; 
SET character_set_connection = utf8;

或者數據庫

SET character_set_client = utf8;
SET character_set_results = gb2312;
SET character_set_connection = utf8;

都是可以嘗試的。但實際我僅僅設置results爲gbk就能夠。ruby

而且第二部分說的什麼設置Font,在個人新版本號里根本沒有這個設置。服務器

這樣設置確實不亂碼了。但是從新啓動SQLyog又不生效了。markdown

網上又說設置一下服務端的my.cnf配置文件中的character-set-server參數或者default參數,我看個人服務器原本就設置了gbk。app

[aipaas@aipaas03 /app]$more my.cnf
[mysqld_multi]
mysqld = /app/mysql/bin/mysqld_safe
mysqladmin = /app/mysql/bin/mysqladmin
user = mysql
password = aiLk@Aug

[mysqld020]
port = 3020
socket = /tmp/mysql.sock01
pid-file = /app/data_01/db-app.pid
basedir = /app/mysql
datadir = /app/data_01
user = mysql
symbolic-links=0
character-set-server=gbk
ndbcluster
ndb-connectstring=130.51.23.24
explicit_defaults_for_timestamp
optimizer_switch=engine_condition_pushdown=off

而我經過主機上的mysql客戶端命令行。字符集是沒有問題的:socket

MySQL [portaldb]> SHOW VARIABLES LIKE 'char%'
 -> ; +--------------------------+--------------------------------------------------------------------+
| Variable_name | Value | +--------------------------+--------------------------------------------------------------------+
| character_set_client     | gbk                                                                |
| character_set_connection | gbk                                                                |
| character_set_database   | gbk                                                                |
| character_set_filesystem | binary                                                             |
| character_set_results    | gbk                                                                |
| character_set_server     | gbk                                                                |
| character_set_system     | utf8                                                               |
| character_sets_dir | /app/mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64/share/charsets/ | +--------------------------+--------------------------------------------------------------------+
8 rows in set (0.00 sec)

這個說明,相同的服務端,不一樣的客戶端是可能會產生不一樣的字符集,因爲我認爲應該有在客戶端改動字符集的方法。
sqlyog的字符集(與上面命令行客戶端的明顯不一樣):
這裏寫圖片描寫敘述

此時,公司的DBA叫我建表時也必須使用gbk。我認爲不靠譜。

首先,爲何強制了建表必須gbk?其次,我在命令行裏都沒有亂碼。僅僅是在SQLyog裏亂碼,我認爲不是建表字符集的問題。
這裏寫圖片描寫敘述

SHOW CREATE TABLE sys_config;

Table       Create Table ---------- -------------- sys_config CREATE TABLE `sys_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type_code` varchar(30) COLLATE utf8_bin DEFAULT NULL, `param_code` varchar(30) COLLATE utf8_bin DEFAULT NULL, `service_value` varchar(20) COLLATE utf8_bin DEFAULT NULL, `service_option` varchar(255) COLLATE utf8_bin DEFAULT NULL, `descb` varchar(255) COLLATE utf8_bin DEFAULT NULL, `state` varchar(2) COLLATE utf8_bin DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COLLATE=utf8_bin 

我想了一下。僅僅要在登陸數據庫的時候,默認先運行一下這條命令就可以了:
這裏寫圖片描寫敘述

問題完美解決。

個人參考連接:

2015.6.23

相關文章
相關標籤/搜索