1. 程式人生 > >centos修改mysql字符集的問題

centos修改mysql字符集的問題

今天遇到問題,在centos部署java Web專案,出現sql查詢異常,sql工具查詢沒問題,但是到程式裡就出事了

select * from officesupply_stock where goodsClassify='辦公用品' and goodsName!='無物品' and stocRemark!='刪除' 

sql工具:查詢出來7條

在程式裡:0條

一開始認為是centos 中mysql的問題,也不完全錯,因為 有一句sql中 別名user 確實是這個問題,修改過後 成功執行,還有Centos對mysql大小寫有點敏感 不能寫成USE。。

但是這個問題不是,思路:為什麼查詢出來的結果對不上呢?在程式裡system.out列印引數 :'辦公用品',說明傳參沒問題,,列印查詢返回list的size(),發現為0,而且sql也在Log 中輸出了,那就是說,引數到了資料庫 ---執行sql,發生了問題,什麼問題呢?就是引數可能變成了一個不存在的值,查完為0,(因為sql正常打印出來,排除sql出錯的問題),那為什麼引數會變呢?想到了字符集的問題,進入mysql ,用命令檢視 ,發現字符集不是utf8 ,直截了當設定utf8,然後再來看,資料正常了!

回過頭來看,問題都有原因  ,日誌才是程式的眼睛。 其實問題都很簡單  只是沒仔細推理  --偉大程式設計專家 Yb1n

下面介紹修改字符集

一、登入MySQL檢視用show variables like 'character%';下字符集,顯示如下:

------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | latin1 |

| character_set_filesystem |binary|

| character_set_results | utf8 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

character_set_database和character_set_server的預設字符集還是latin1。

二、最簡單的完美修改方法,修改mysql的/etc/my.cnf 檔案中的字符集鍵值(注意配置的欄位細節):

[plain] view plain copy

1. 在[mysqld]欄位里加入character_set_server=utf8,如下:  

2. [mysqld]  

3. port = 3306  

4. socket = /var/lib/mysql/mysql.sock  

 character_set_server=utf8

修改完成後,sudo systemctl restart mysqld重啟mysql服務就生效。 

使用show variables like 'character%';檢視,發現數據庫編碼全已改成utf8。

[sql] view plain copy

1. +--------------------------+----------------------------+  

2. | Variable_name | Value |  

3. +--------------------------+----------------------------+  

4. | character_set_client | utf8 |  

5. | character_set_connection | utf8 |  

6. | character_set_database | utf8 |  

7. | character_set_filesystem | binary |  

8. | character_set_results | utf8 |  

9. | character_set_server | utf8 |  

10. | character_set_system | utf8 |  

11. | character_sets_dir | /usr/share/mysql/charsets/ |