標籤:
----修改資料庫字元集的一個原則是:新的字元集包含的字型檔要>=原有的字元集字型檔,否則已經存在的資料可能會變為亂碼。
如果資料庫中暫時還沒有資料,那麼我們可以直接執行命令。假如此時資料庫中有表,那麼表的字元集是不會隨著資料庫的字元集更改而更改的。
alter database dbname character set charset_name
假如資料庫中存在有資料,其實也可以執行這個命令,但是會遺留一個問題,也就是之前已經存在的資料的表的字元集,而只是對新加的表或者記錄生效。
此時我們可以通過另外的方法來將字元集進行修改。
類比環境,類比將資料庫A的字元集從latin1修改為gbk(下面語句中的參數具體含義請自行尋找)
1.export目前A資料庫中已經存在的表結構(目前A資料庫中存在表a)
mysqldump -uroot -p --default-character-set=gbk -d A >table_create.sql
2.手動將table_create.sql中的表結構的字元集為gbk
具體是:
CREATE TABLE `a` ( `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=gbk;
3.確認應用程式已經不再修改A資料庫中所有表的資料,再export所有的資料
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set =latin1 A>A_data.sql
4.開啟A_data.sql,將其中的SET NAMES latin1修改為SET NAMES gbk.
/*!40101 SET NAMES gbk */;
5.將以前的資料庫刪除掉
6.使用新的字元集來建立同名資料庫
create database A default charset gbk;
7.使用table_create.sql來建立表
mysql -uroot -p A <table_create.sql
8.import資料,使用A_data.sql
mysql -uroot -p A <A_data.sql
至此,我們就已經完整的將A資料庫的字元集從latin1修改為gbk
Mysql修改資料庫的字元集