一直不用這個phpmyadmin,在本機也是用navicat,總感覺phpmyadmin速度較慢。這回不行了,沒有獨立主機,只好用人家給的phpmyadmin了。
第一步:本地數(shù)據(jù)導(dǎo)出sql文件。心想這對于navicat小事一樁。直接在數(shù)據(jù)庫上右鍵“轉(zhuǎn)儲sql”(如圖1),嘩嘩,十幾秒的時間導(dǎo)出成功。
(圖1:navicat下對整個數(shù)據(jù)庫轉(zhuǎn)sql)
用記事本打開一看,傻眼了。中文全是亂碼。咋回事呢?搜索了一下,改變什么連接屬性啥的。不管用。試著在單張表上,轉(zhuǎn)儲sql,嘿,中文正常。但是82個表,我一個個轉(zhuǎn)儲我不累死。不行。看來只能棄用我心愛的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.導(dǎo)入選擇文件ttgbk2.sql.點執(zhí)行。那個速度,唉。。。一會兒報錯了。在執(zhí)行l(wèi)ock tables tablename write 時出現(xiàn)access denied錯誤,原來我是虛擬主機用戶沒有 lock tables的權(quán)限.打開sql一看還真有l(wèi)ock tables 選項。沒權(quán)限那就不用這個。到網(wǎng)上一搜說加上--skip-lock-tables,心想不錯,應(yīng)該是這個“跳過鎖表”嘛
在mysqldump時加上-skip-lock-tables選項,那么命令行就變成
C:\Documents and Settings\Administrator>mysqldump -uroot -p123 --default-character-set=gbk --skip-lock-tables ttg>ttgbk3.sql.
結(jié)果令人失望,還是有l(wèi)ock tables.
后來看了一下mysqldump --help
才明白--skip-lock-tables是用在備份時候不讓讀寫。但是如果你不想讓導(dǎo)出的帶lock-tables(因為你導(dǎo)入的時候沒有權(quán)限嘛,呵呵)應(yīng)該是使用add-locks=false,這是2個概念。正確的如下
C:\Documents and Settings\Administrator>mysqldump -uroot -p123 --default-character-set=gbk ttg --add-locks=false>ttgttg3.sql.
我的版本導(dǎo)出的在記事本中打開是asni格式的。
再次到phpmyadmin處導(dǎo)入。結(jié)果是導(dǎo)入了3個表后報錯。mysql語句報錯。一看中文還亂碼。。。。。接近崩潰。
再找原因。把“MySQL 連接校對”改成gbk-chinese-ci,把language改成中文-chinese simplified(如圖2)。再把導(dǎo)入時“文件編碼”改成“gbk”(默認的是utf-8,當然對應(yīng)的sql文件的編碼用記事本打開就是ansi.)(如圖三).再試。。。。
(圖二:修改連接校對及l(fā)anguage)
(圖三:修改文件的字符集為gbk)
終于所有表導(dǎo)入成功。打開一個含有中文的表,字段顯示正常。
2點體會:
1、數(shù)據(jù)庫編碼歸數(shù)據(jù)庫編碼。保證連接校對與數(shù)據(jù)庫編碼一致即可。
2、sql文件編碼歸文件編碼。保證導(dǎo)入時選擇的文件編碼與數(shù)據(jù)庫所用編碼一致最好。
這是2個編碼問題。
服了你了mysql.從知道你有這個編碼問題到到現(xiàn)在,你還是這個樣子。這個問題還是讓很多人困惑。啥時候像sqlserver那樣國際化就好了。