程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 實戰mysql導出中文亂碼及phpmyadmin導入中文亂碼

實戰mysql導出中文亂碼及phpmyadmin導入中文亂碼

編輯:關於MYSQL數據庫

因為要把本機的gbk編碼的MySQL數據庫導入到虛擬主機去,服務商只提供了phpmyadmin供你導入導出。一直不用這個phpmyadmin,在本機也是用navicat,總感覺phpmyadmin速度較慢。這回不行了,沒有獨立主機,只好用人家給的PHPmyadmin了。

第一步:本地數據導出sql文件。心想這對於navicat小事一樁。直接在數據庫上右鍵“轉儲sql”(如圖1),嘩嘩,十幾秒的時間導出成功。

圖1:navicat下對整個數據庫轉sql

用記事本打開一看,傻眼了。中文全是亂碼。咋回事呢?搜索了一下,改變什麼連接屬性啥的。不管用。試著在單張表上,轉儲sql,嘿,中文正常。但是82個表,我一個個轉儲我不累死。不行。看來只能棄用我心愛的navicat了。想起有個mysqldump,好試試它。運行-C:\Documents and Settings\Administrator>MySQLdump -uroot -p123  ttg>ttgbk2.sql。打開一看,還是亂碼。還不行。唉。。搜索,改成下面的加上指定字符集

C:\Documents and Settings\Administrator>MySQLdump -uroot -p123 --default-character-set=gbk ttg>ttgbk2.sql。打開看看。嘿可以了。

 

第二步:打開虛擬主機提供的PHPmyadmin.導入選擇文件ttgbk2.sql.點執行。那個速度,唉。。。一會兒報錯了。在執行lock tables tablename write 時出現Access denIEd錯誤,原來我是虛擬主機用戶沒有 lock tables的權限.打開sql一看還真有lock tables 選項。沒權限那就不用這個。到網上一搜說加上--skip-lock-tables,心想不錯,應該是這個“跳過鎖表”嘛

在MySQLdump時加上-skip-lock-tables選項,那麼命令行就變成
C:\Documents and Settings\Administrator>MySQLdump -uroot -p123 --default-character-set=gbk --skip-lock-tables ttg>ttgbk3.sql.
結果令人失望,還是有lock tables.
後來看了一下MySQLdump --help
才明白--skip-lock-tables是用在備份時候不讓讀寫。但是如果你不想讓導出的帶lock-tables(因為你導入的時候沒有權限嘛,呵呵)應該是使用add-locks=false,這是2個概念。正確的如下
C:\Documents and Settings\Administrator>MySQLdump -uroot -p123 --default-character-set=gbk ttg --add-locks=false>ttgttg3.sql.

我的版本導出的在記事本中打開是asni格式的。

再次到PHPmyadmin處導入。結果是導入了3個表後報錯。MySQL語句報錯。一看中文還亂碼。。。。。接近崩潰。

再找原因。把“MySQL 連接校對”改成gbk-chinese-ci,把language改成中文-chinese simplifIEd(如圖2)。再把導入時“文件編碼”改成“gbk”(默認的是utf-8,當然對應的sql文件的編碼用記事本打開就是ansi.)(如圖三).再試。。。。

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved