【指令】

匯出 mysqldump

匯出整個資料庫 mysqldump -u[username] --password=[password] [db_name] > [file_name]
例:mysqldump -uroot --password=1234 test_db > test_db.sql
匯出某個資料表 mysqldump -u[username] --password=[password] [db_name] [table_name] > [file_name]
例:mysqldump -uroot --password=1234 test_db test_table > test_db.sql
以某種編碼匯出 mysqldump --default-character-set=latin1 -u[username] --password=[password] [db_name] > [file_name]
例:mysqldump --default-character-set=latin1 -uroot --password=1234 test_db > test_db.sql

顯示mysql資訊SHOW語法(在shell下可使用mysqlshow)

顯示MySql設定資訊 mysql語法:show variables;
php語法:mysql_query(”show variables”);
mysql語法:show variables like '%big5%';
php語法:mysql_query(”show variables like '%big5%'”);
shell>mysqladmin variables
顯示編碼 mysql語法:SHOW CHARACTER SET;
php語法:mysql_query(”SHOW CHARACTER SET”);
mysql語法:SHOW CHARACTER SET like 'utf8';
php語法:mysql_query(”SHOW CHARACTER SET like 'utf8'”);

 

【亂碼問題】

  1. 未指定編碼方式時,MySQL的預設編碼是「latin1」。
  2. 由舊版MySQL升級至4.1版時,若mysqldump出來的資料是亂碼,需指定編碼是「latin1」。例:mysqldump --default-character-set=latin1 -uroot --password=1234 test_db > test_db.sql
  3. 資料dump出來以後,用DW開啟,如果是看到亂碼,改一下頁面屬性裡面的編碼方式看看。

【MySQL 升級到 4.1】

  1. 升級前要先把資料dump出來,升級後再import進去。
  2. 資料dump出來時要加上 「--default-character-set=latin1」,參考【亂碼問題】
  3. dump出來的資料要先轉成正確的編碼,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8。

    #mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql

    #piconv -f utf8 -t big5 output.sql > big5.sql
    #piconv -f big5 -t utf8 big5.sql >utf8.sql

  4. 修改 my.cnf 或 my.ini 的編碼設定,參考【MySQL 4.1.x 記得要加在 my.cnf 的東西】
  5. 資料import進去之前,mysql4.1的資料庫要設定好每一個database與table的編碼方式,sql檔最前面要加上 「set NAMES=utf8;」。
  6. 建立資料庫時,確定要加入這個選項
    DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
    應該會是這樣的語法
    CREATE DATABASE `tmp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

    資料表的屬性也要確定為 COLLATE utf8_general_ci
    不過直接新增資料表,為跟著資料庫的設定一起,便可以不用加上屬性

  7. 建立資料表時,確定要加入這個選項
    DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
    應該會是這樣的語法
    create table art_activity(
         id int unsigned not null auto_increment primary key, /* PK 資料序號 */
         subject tinytext not null, /* 標題名稱 */
         keyin_date datetime /* 資料建檔日期時間 */
    ) DEFAULT CHARSET=big5 COLLATE big5_chinese_ci;
  8. 剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個”\“,記得用文字編輯器把他消掉
    import進去時記得還要先修改一下dump出來的sql檔,在最前面加上

    SET NAMES utf8;
    SET CHARACTER_SET_CLIENT=utf8;
    SET CHARACTER_SET_RESULTS=utf8;

    再來把每個資料表後面的

    TYPE=MyISAM;

    改成

    ENGINE=MyISAM DEFAULT CHARSET=utf8;

    都改好後就可以把他import進去了

    #mysql -u帳號 -p 資料庫 < utf8.sql

  9. 資料匯入時也可以下語法
    mysql  -uname  -ppassword  -Ddbname  --default-character-set=utf8  <  XXX.sql
  10. 當資料表都是 utf8 格式後. 你的 php 程式還是跑 big5 阿...這時候該怎麼辦呢?...

    只要在連線資料庫後立刻執行下面的SQL語法,設定 client charset ....
    SET NAMES big5;
    SET CHARACTER_SET_CLIENT=big5;
    SET CHARACTER_SET_RESULTS=big5;

    這樣取出跟存入的資料就會自動轉碼...
  11. PHP程式連線mysql在開啟資料庫時要加上
    $charset = mysql_query("SET NAMES big5;");
    $charset = mysql_query("SET CHARACTER_SET_CLIENT=big5;");
    $charset = mysql_query("SET CHARACTER_SET_RESULTS=big5;");
    參考

【MySQL 4.1.x 記得要加在 my.cnf 的東西】

[client]
default-character-set=utf8

[mysqld]
init_connect=‘SET NAMES utf8′
default-character-set=utf8
default-collation=utf8_general_ci

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8 

arrow
arrow
    全站熱搜

    yoonow 發表在 痞客邦 留言(0) 人氣()