【指令】
匯出 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\' ”); |
【亂碼問題】
- 未指定編碼方式時,MySQL的預設編碼是「latin1」。
- 由舊版MySQL升級至4.1版時,若mysqldump出來的資料是亂碼,需指定編碼是「latin1」。例:mysqldump --default-character-set=latin1 -uroot --password=1234 test_db > test_db.sql
- 資料dump出來以後,用DW開啟,如果是看到亂碼,改一下頁面屬性裡面的編碼方式看看。
【MySQL 升級到 4.1】
- 升級前要先把資料dump出來,升級後再import進去。
- 資料dump出來時要加上 「--default-character-set=latin1」,參考【亂碼問題】。
- 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
- 修改 my.cnf 或 my.ini 的編碼設定,參考【MySQL 4.1.x 記得要加在 my.cnf 的東西】。
- 資料import進去之前,mysql4.1的資料庫要設定好每一個database與table的編碼方式,sql檔最前面要加上 「set NAMES=utf8;」。
- 建立資料庫時,確定要加入這個選項
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
應該會是這樣的語法
CREATE DATABASE `tmp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
資料表的屬性也要確定為 COLLATE utf8_general_ci
不過直接新增資料表,為跟著資料庫的設定一起,便可以不用加上屬性
- 建立資料表時,確定要加入這個選項
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;
- 剛剛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
- 資料匯入時也可以下語法
mysql -uname -ppassword -Ddbname --default-character-set=utf8 < XXX.sql
- 當資料表都是 utf8 格式後. 你的 php 程式還是跑 big5 阿...這時候該怎麼辦呢?...
只要在連線資料庫後立刻執行下面的SQL語法,設定 client charset ....
SET NAMES big5;
SET CHARACTER_SET_CLIENT=big5;
SET CHARACTER_SET_RESULTS=big5;
這樣取出跟存入的資料就會自動轉碼...
- 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