最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL存儲數(shù)據(jù)亂碼的問題解析

 更新時間:2015年05月07日 10:57:39   投稿:goldensun  
這篇文章主要介紹了MySQL存儲數(shù)據(jù)亂碼的問題解析,作者從實際使用中的多個方面定位其原因然后解決,需要的朋友可以參考下

mysql的字符集設(shè)置有多個層級,在mysql中存儲中文,如果不能正確設(shè)置字符集,很容易出現(xiàn)數(shù)據(jù)亂碼。今天就有一個用戶反饋他數(shù)據(jù)庫中的數(shù)據(jù)下午1點多開始出現(xiàn)了亂碼。在這里,我分享下具體問題的排查過程,以及解決的辦法。

(1)  排除客戶端設(shè)置導(dǎo)致的顯示亂碼

如果用戶設(shè)置的mysql character_set_client跟客戶端顯示的字符集不一致,很容易導(dǎo)致中文數(shù)據(jù)亂碼。

設(shè)置session字符集為utf8:set names utf8,設(shè)置客戶端顯示字符集為utf8,然后從表中select出有亂碼的數(shù)據(jù)。

201557105216605.jpg (821×583)

上面顯示,在character_set_client跟客戶端的字符集一致的情況下,還是出現(xiàn)了亂碼,這個排除是用戶顯示字符集設(shè)置不對的可能。下面通過hex(item_title)列來查看這個列在底層的存儲字符集是否正確。

201557105249811.jpg (811×149)

通過上面的查詢,可以確認(rèn)這個數(shù)據(jù)亂碼不是顯示問題,而是存儲的數(shù)據(jù)內(nèi)容本身就是錯誤的。

(2)  定位存儲亂碼原因

1>     用戶確認(rèn)這個記錄插入時能夠正常顯示,但是后來update之后,數(shù)據(jù)就亂碼了。根據(jù)這個信息到binlog中查找更改正確內(nèi)容對應(yīng)的update語句。

201557105315821.jpg (792×244)

201557105339521.jpg (737×771)

上面的binlog日志顯示這個sql將原來數(shù)據(jù)庫中正確的內(nèi)容,更新成一堆亂碼。所以導(dǎo)致數(shù)據(jù)庫中的存儲數(shù)據(jù)亂碼。

從binlog日志可以看出在更新時,是用latin1的方式寫入到數(shù)據(jù)庫中。Update后面的set語句中item_title字段的內(nèi)容是亂碼的,所以確認(rèn)是導(dǎo)入數(shù)據(jù)源本身內(nèi)容有問題,從而導(dǎo)致更新后的數(shù)據(jù)亂碼。跟用戶確認(rèn)這個update語句的更新內(nèi)容,是先從庫中l(wèi)oad 出來,后拼接成的update sql,所以懷疑load出來的數(shù)據(jù)就已經(jīng)是亂碼了,然后直接用這個錯誤的數(shù)據(jù)更新原來正確的數(shù)據(jù),導(dǎo)致所有的正確的數(shù)據(jù)亂碼。所以,需要確認(rèn)這個update導(dǎo)入的數(shù)據(jù)源是否正確,即load出來的數(shù)據(jù)是否是正確的。

2>     導(dǎo)入數(shù)據(jù)源確認(rèn)

開啟實例的全日志開關(guān),然后比對日志,從上面update語句對應(yīng)的連接運行的sql中查找數(shù)據(jù)導(dǎo)出語句,以及對應(yīng)的字符集設(shè)置。

201557105423659.jpg (810×324)

從上面的日志內(nèi)容可以看出,這個連接建立后沒有進(jìn)行任何字符集的設(shè)置,直接從數(shù)據(jù)庫中將內(nèi)容select出來。在mysql中,如果沒有設(shè)置session級別的字符集,那么使用默認(rèn)的配置,配置如下:

201557105448774.jpg (816×323)

即輸出會按照latin1的格式顯示。在默認(rèn)字符集的配置下,手動運行SELECT `main_table`.* FROM `promo_item` AS `main_table` WHERE  promo_item_id ='500186324' 命令,可以發(fā)現(xiàn),在character_set_results 設(shè)置為latin1的情況下,輸出結(jié)果中的item_title確實為一堆問號。

201557105513089.jpg (794×572)

由于latin1不能正確表示中文字符,所以顯示為一堆問號,用戶直接將這個內(nèi)容update 原來正確的內(nèi)容,所以導(dǎo)致存儲內(nèi)容亂碼。

(3)小結(jié)

在使用mysql存儲中文字符時,需要注意以下幾點:

1>     確認(rèn)更新的數(shù)據(jù)源同mysql 的session級別的字符集保持一致,Session級別的字符集可以用set names charset_name來設(shè)置。

2>     如果要正確顯示中文,需要將character_set_results設(shè)置為GBK或是utf8。同時,客戶端的顯示字符集需要跟character_set_results的配置一致。

相關(guān)文章

  • MySQL 兩張表數(shù)據(jù)合并的實現(xiàn)

    MySQL 兩張表數(shù)據(jù)合并的實現(xiàn)

    本文主要介紹了MySQL 兩張表數(shù)據(jù)合并的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • mysql5.7使用變量進(jìn)行分組排名并實現(xiàn)篩選

    mysql5.7使用變量進(jìn)行分組排名并實現(xiàn)篩選

    這篇文章主要介紹了mysql5.7使用變量進(jìn)行分組排名并實現(xiàn)篩選方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Mysql數(shù)據(jù)遷徙方法工具解析

    Mysql數(shù)據(jù)遷徙方法工具解析

    這篇文章主要介紹了mysql數(shù)據(jù)遷徙方法工具解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Mysql的基礎(chǔ)使用之MariaDB安裝方法詳解

    Mysql的基礎(chǔ)使用之MariaDB安裝方法詳解

    這篇文章主要介紹了Mysql的基礎(chǔ)使用之MariaDB安裝的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • MySQL中any、some和all的用法實例

    MySQL中any、some和all的用法實例

    最近一直在練習(xí)MYSQL的多表查詢,基本上每個查詢語句我都會寫至少兩次,下面這篇文章主要給大家介紹了關(guān)于MySQL中any、some和all用法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • mysql報錯RSA?private?key?file?not?found的解決方法

    mysql報錯RSA?private?key?file?not?found的解決方法

    當(dāng)MySQL報錯RSA?private?key?file?not?found時,可能是由于MySQL的RSA私鑰文件丟失或者損壞導(dǎo)致的,此時可以重新生成RSA私鑰文件,以解決這個問題
    2023-06-06
  • mysql for update是鎖表還是鎖行實例詳解

    mysql for update是鎖表還是鎖行實例詳解

    在并發(fā)一致性控制場景中,我們常常用for update悲觀鎖來進(jìn)行一致性的保證,但是如果不了解它的機(jī)制,就進(jìn)行使用,很容易出現(xiàn)事故,比如for update進(jìn)行了鎖表導(dǎo)致其他請求只能等待,從而拖垮系統(tǒng),這篇文章主要介紹了mysql for update是鎖表還是鎖行操作,需要的朋友可以參考下
    2024-03-03
  • 如何查詢MySQL中某個表的索引信息

    如何查詢MySQL中某個表的索引信息

    MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),索引是數(shù)據(jù)庫中非常重要的組成部分,可以幫助提高查詢效率,這篇文章主要給大家介紹了關(guān)于如何查詢MySQL中某個表的索引信息,需要的朋友可以參考下
    2024-08-08
  • 關(guān)于skip_name_resolve參數(shù)的總結(jié)分享

    關(guān)于skip_name_resolve參數(shù)的總結(jié)分享

    下面小編就為大家?guī)硪黄P(guān)于skip_name_resolve參數(shù)的總結(jié)分享。小編覺得挺不錯的,現(xiàn)在分享給大家。給大家一個參考。一起跟隨小編過來看看吧
    2016-03-03

最新評論

宕昌县| 大方县| 黄山市| 浑源县| 洛阳市| 兰考县| 衢州市| 衡水市| 新平| 晋州市| 金坛市| 南皮县| 武定县| 富宁县| 安溪县| 漠河县| 浦县| 阿荣旗| 汕头市| 辽源市| 吉首市| 莎车县| 灌云县| 凤凰县| 呈贡县| 浦东新区| 保山市| 敖汉旗| 山东省| 民县| 金阳县| 吉木萨尔县| 永康市| 青阳县| 万盛区| 白玉县| 伊川县| 鞍山市| 北安市| 苏尼特右旗| 宁都县|