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

mysql亂碼問題分析與解決方法

 更新時(shí)間:2012年11月29日 11:18:15   作者:  
開發(fā)過程中總避免不了遇到惡心的亂碼,或者由亂碼引發(fā)的一系列問題,這里簡(jiǎn)要介紹一下自己遇到的亂碼問題和解決問題的過程中的想法以及大致的操作
開發(fā)過程中總避免不了遇到惡心的亂碼,或者由亂碼引發(fā)的一系列問題。出現(xiàn)亂碼是字符集的原因一般而言和邏輯沒有太大關(guān)系,也就是說整個(gè)系統(tǒng)大的方向沒有問題,小的地方出現(xiàn)了漏洞,進(jìn)而導(dǎo)致程序不能正常運(yùn)行,所以說出現(xiàn)亂碼是一件令人非常很惡心的事情。這里簡(jiǎn)要介紹一下自己遇到的亂碼問題和解決問題的過程中的想法以及大致的操作,我們要學(xué)會(huì)的是如何分析問題進(jìn)而解決問題,而不僅僅是照著網(wǎng)上的操作去一次次的解決眼前的困難,“魚”與“漁”的區(qū)別就在于此。

交代背景
要實(shí)現(xiàn)的功能很簡(jiǎn)單,用dom4J讀取XML文件然后借助Spring以及Hibernate將數(shù)據(jù)寫入到MySql數(shù)據(jù)庫(kù)(多表)中,當(dāng)然整個(gè)過程是由Spring控制事務(wù)一次性完成,有異常進(jìn)行回滾。
現(xiàn)象:在往數(shù)據(jù)庫(kù)里寫數(shù)據(jù)寫到一半的時(shí)候報(bào)錯(cuò),大致的錯(cuò)誤信息是:記錄不是唯一。
分析和操作:
檢查了一遍自己的代碼,用Spring當(dāng)中的HibernateTemplete保存數(shù)據(jù),應(yīng)該沒有問題。

再次觀察現(xiàn)象:好像是外鍵約束的問題,因?yàn)槊慨?dāng)插入到帶有外鍵的表的時(shí)候數(shù)據(jù)死活錄入不進(jìn)去。
分析和操作
既然是外鍵表的問題,首先應(yīng)該確定外鍵表中的內(nèi)容是什么,于是手動(dòng)改數(shù)據(jù)庫(kù)隔離等級(jí)查看數(shù)據(jù),果然里面是亂碼!

問題:亂碼是怎么進(jìn)入數(shù)據(jù)庫(kù)的?
分析和操作:
要么讀取xml的時(shí)候就是亂碼,要么在往數(shù)據(jù)庫(kù)里寫的時(shí)候變成亂碼。再次斷點(diǎn)調(diào)試測(cè)試在程序中是否亂碼。

現(xiàn)象:在eclipse當(dāng)中打印出來(lái)信息沒有出現(xiàn)亂碼問題
分析與操作:
這就說明在程序中一切沒有問題,是數(shù)據(jù)庫(kù)的問題。于是先改數(shù)據(jù)庫(kù)鏈接字符串指定編碼,再改數(shù)據(jù)庫(kù)的編碼,再次斷點(diǎn)調(diào)試。

現(xiàn)象:數(shù)據(jù)庫(kù)中依然是亂碼,但是亂碼的形式換了,之前全是“?”現(xiàn)在是一些亂七八糟的文字。
分析和操作:
很明顯上面一系列修改編碼格式的操作起作用了,只是沒有修改對(duì)而已。再次檢查各項(xiàng)的編碼格式,沒有發(fā)現(xiàn)問題
問題一度陷入僵局……
尋求幫助:秋提出別用命令窗口了,太麻煩了,用第三方客戶端吧,于是換用第三方客戶端,奇怪的是客戶端顯示沒有問題!
分析和操作:
客戶端沒有問題命令窗口有問題,那就說明數(shù)據(jù)庫(kù)里已經(jīng)不是亂碼,亂碼可能是命令行顯示的問題。設(shè)置命令行顯示字符,果然顯示正常!再次測(cè)試數(shù)據(jù)導(dǎo)入----一切OK。

思考與總結(jié)
現(xiàn)象:其實(shí)在第一次修改完各項(xiàng)編碼的時(shí)候這個(gè)問題已經(jīng)算是解決了,但是由于當(dāng)時(shí)自己斷點(diǎn)調(diào)試的時(shí)候沒有讓程序執(zhí)行完所以一直認(rèn)為數(shù)據(jù)庫(kù)中依然是亂碼。
總結(jié):
應(yīng)該在每次調(diào)試的時(shí)候讓程序跑完,將錯(cuò)誤的上下文環(huán)境模擬出來(lái),而不是只關(guān)注錯(cuò)誤本身。

現(xiàn)象:在這里涉及到編碼的地方有XML的編碼、dom4j的讀取編碼、數(shù)據(jù)庫(kù)編碼、數(shù)據(jù)庫(kù)連接字符串指定編碼、命令行窗口顯示編碼。這其中哪個(gè)沒有注意到問題也解決不了(這里自己沒有意識(shí)到最后一個(gè))。
總結(jié):
全局觀的意思是把握每個(gè)控制變量,從開始到結(jié)束,有意識(shí)的跳出環(huán)境來(lái)做假設(shè)。

相關(guān)文章

  • Mysql中DATEDIFF函數(shù)的基礎(chǔ)語(yǔ)法及練習(xí)案例

    Mysql中DATEDIFF函數(shù)的基礎(chǔ)語(yǔ)法及練習(xí)案例

    Datediff函數(shù),最大的作用就是計(jì)算日期差,能計(jì)算兩個(gè)格式相同的日期之間的差值,下面這篇文章主要給大家介紹了關(guān)于Mysql中DATEDIFF函數(shù)的基礎(chǔ)語(yǔ)法及練習(xí)案例?的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • mysql執(zhí)行計(jì)劃介紹

    mysql執(zhí)行計(jì)劃介紹

    下面我簡(jiǎn)單講講mysql的執(zhí)行計(jì)劃,只列出了一些常見的情況,希望對(duì)大家有所幫助
    2013-11-11
  • mysql的數(shù)據(jù)壓縮性能對(duì)比詳情

    mysql的數(shù)據(jù)壓縮性能對(duì)比詳情

    這篇文章主要介紹了mysql的數(shù)據(jù)壓縮性能對(duì)比,今天對(duì)這兩種方式分別進(jìn)行了測(cè)試,對(duì)比了二者在磁盤占用以及查詢性能方面各自的優(yōu)劣,下面我們大家一起進(jìn)入文章了解詳細(xì)內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • 完美解決mysql啟動(dòng)后隨即關(guān)閉的問題(ibdata1文件損壞導(dǎo)致)

    完美解決mysql啟動(dòng)后隨即關(guān)閉的問題(ibdata1文件損壞導(dǎo)致)

    下面小編就為大家?guī)?lái)一篇完美解決mysql啟動(dòng)后隨即關(guān)閉的問題(ibdata1文件損壞導(dǎo)致)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-03-03
  • MySQL中將一列以逗號(hào)分隔的值行轉(zhuǎn)列的實(shí)現(xiàn)

    MySQL中將一列以逗號(hào)分隔的值行轉(zhuǎn)列的實(shí)現(xiàn)

    這篇文章主要介紹了MySQL中將一列以逗號(hào)分隔的值行轉(zhuǎn)列的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • mysql如何將數(shù)據(jù)庫(kù)中的所有表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到另一個(gè)庫(kù)

    mysql如何將數(shù)據(jù)庫(kù)中的所有表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到另一個(gè)庫(kù)

    介紹了如何使用mysqldump命令備份和導(dǎo)入數(shù)據(jù)庫(kù),以及創(chuàng)建目標(biāo)數(shù)據(jù)庫(kù)的步驟,首先使用mysqldump備份源數(shù)據(jù)庫(kù),然后在目標(biāo)數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù),并將備份文件導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù),確保數(shù)據(jù)結(jié)構(gòu)和內(nèi)容完整復(fù)制,提到了DataGrip、Navicat在導(dǎo)入導(dǎo)出過程中可能出現(xiàn)的問題
    2024-10-10
  • MySQL中EXPLAIN語(yǔ)句及用法實(shí)例

    MySQL中EXPLAIN語(yǔ)句及用法實(shí)例

    我們常常用到explain這個(gè)命令來(lái)查看一個(gè)這些SQL語(yǔ)句的執(zhí)行計(jì)劃,查看該SQL語(yǔ)句有沒有使用上了索引,下面這篇文章主要給大家介紹了關(guān)于MySQL中EXPLAIN語(yǔ)句及用法的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • MySQL系列之二 多實(shí)例配置

    MySQL系列之二 多實(shí)例配置

    MySQL多實(shí)例就是在一臺(tái)服務(wù)器上同時(shí)開啟多個(gè)不同的服務(wù)端口,本文就介紹一下MySQL多實(shí)例配置,感興趣的可以了解一下
    2021-07-07
  • ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN

    ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN

    這篇文章主要介紹了ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN,本文是在MySQL Workbench的環(huán)境操作,需要的朋友可以參考下
    2014-11-11
  • win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法

    win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法

    這篇文章主要介紹了win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法,需要的朋友可以參考下
    2016-04-04

最新評(píng)論

遂宁市| 仁怀市| 海口市| 乌鲁木齐县| 宜兰市| 武定县| 民和| 金门县| 黑河市| 云安县| 滁州市| 米脂县| 木兰县| 邵阳县| 松潘县| 黔西县| 凤冈县| 内乡县| 汝州市| 湖州市| 阳泉市| 呼伦贝尔市| 万盛区| 中卫市| 贵港市| 启东市| 巴林左旗| 社会| 密山市| 富蕴县| 岚皋县| 明光市| 酒泉市| 宜昌市| 板桥市| 岳西县| 石门县| 新竹县| 吉林市| 襄樊市| 泸溪县|