天天看點

mysql 3.23更新到mysql5及更新後搞定亂碼

原貼:http://www.fingerling.cn/read.php?27

30

mysql 3.23更新到mysql5及更新後搞定亂碼

mysql 3.23更新到mysql5及更新後搞定亂碼

 14:24  

mysql 3.23更新到mysql5及更新後搞定亂碼

 593  

mysql 3.23更新到mysql5及更新後搞定亂碼
mysql 3.23更新到mysql5及更新後搞定亂碼

  IT教程 » 數 據 庫

mysql 3.23更新到mysql5及更新後搞定亂碼

大 | 中 | 小

mysql 3.23更新到mysql5及更新後搞定亂碼
mysql 3.23更新到mysql5及更新後搞定亂碼

  這兩天更新伺服器的資料庫,網上都說更新mysql要從3升到5,要先升到4再升到5。

mysql 3.23更新到mysql5及更新後搞定亂碼

2個G的資料庫,想把我弄暈啊。早聽說升這個不好整,先在虛拟機上裝了個mysql5,然後本地開始導入試試。

我暈,全是亂碼。

mysql 3.23更新到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