原貼:http://www.fingerling.cn/read.php?27
30
mysql 3.23更新到mysql5及更新後搞定亂碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SZtlGdvw1cldWYtl2LcJWZ39CXlRXYsBXblR3Lc52YucmbpxmcldmbpZmL3d3dvw1LcpDc0RHaiojIsJye.gif)
14:24
593
IT教程 » 數 據 庫
大 | 中 | 小
這兩天更新伺服器的資料庫,網上都說更新mysql要從3升到5,要先升到4再升到5。
2個G的資料庫,想把我弄暈啊。早聽說升這個不好整,先在虛拟機上裝了個mysql5,然後本地開始導入試試。
我暈,全是亂碼。
在網上一通搜尋,終于找着一篇解決辦法,不容易啊!
導出資料(這時候mysql4一定是正常運作着,呵呵(廢話))
如果mysqldump 版本是4
mysqldump -u xxx -p xxx DBNAME > DBNAME.sql
如果mysqldump 版本是5
mysqldump -u xxx -p xxx –default-character-set=latin1 DBNAME > DBNAME.sql
導入資料 確定mysql -V 的是5
運作
gbk 的這樣 mysql -u xxx -p xxx -e “CREATE DATABASE `資料庫名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci”
utf8的mysql -u xxx -p xxx -e “CREATE DATABASE `資料庫名` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
mysql -u xxx -p xxx --default-character-set=編碼 DBNAME < DBNAME.sql
上面的編碼有可能是 gbk 或者是 utf8
照上面的方法測試成功,不過在實際導入的時候還是出了不少問題,頭暈腦脹中,竟然不小心把一個400M資料庫删除了,-_-!,還好事前備份了下。
經過一番苦戰,最終更新成功。
總結一下:
1.用mysqldump導出的建表語句,在字段兩邊沒有phpmyadmin那樣加上``符号,如果字段名正好與mysql5的保留字一樣,就會出 錯。好幾個資料庫裡面裝了ourplus統計程式,裡面的字段return就是mysql5的關鍵字。建議用phpmyadmin先導出表結構,再在 mysql5的phpmyadmin裡面建表。然後在用mysqldump導出資料的時候加上-t參數隻導出資料。
2.對于大的資料庫,在導 入資料時也有可能會出錯,因為裡面的資料可能帶有不規則字元,比如/n,幾百兆的資料庫檔案是不可能打開編輯的,隻好犧牲一點啦。在導入資料的時候加上- f參數強制導入,會丢失一點資料,不過整體影響不大,像我導的論壇貼子幾萬條丢了一百多條吧。
3.用上面的辦法一般不用修改檔案也不會出現亂碼,對于UTF8格式的資料庫,必須進行修改。
在用mysql_connect或mysql_pconnect連接配接資料庫後,加上:mysql_query("SET NAMES 'UTF8'");語句,如下:
if (mysql_get_server_info()>4.1)
mysql_query("SET NAMES 'UTF8'");
if (mysql_get_server_info()> '5.0')
mysql_query("SET sql_mode=''"); 相關日志
mysql指令行常用指令
[轉]MYSQL到ORACLE程式遷移的注意事項
MYSQL4.1密碼認證方式的更改
MYSQL忘記密碼的解決辦法
Tags: mysql