一、字符集亂碼
1.操作系統字符集
[root@mysql5 ~]# cat /etc/system-release /etc/sysconfig/i18n CentOS release 6.5 (Final) # 操作系統發行版本 LANG="en_US.UTF-8" # 語言版本 SYSFONT="latarcyrheb-sun16"
2.設置MySQL客戶端
set names utf8;
[mysql]
default-character-set=utf8
3.設置MySQL服務端
[mysqld] # mysql5.1 default-character-set=utf8 # mysql5.5 character-set-server=utf8
4.庫表
create database zwq default character set utf8 collate utf8_general_ci;
5、系統字符集與數據庫字符集的關聯
[root@mysql5 ~]# cat /etc/sysconfig/i18n ; mysql -e "show variables like 'character_set%';"; LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 $LANG決定 | | character_set_connection | utf8 $LANG決定 | | character_set_database | utf8 屬性 character_set_server | | character_set_filesystem | binary | | character_set_results | utf8 $LANG決定 | | character_set_server | utf8 屬性 character_set_server | | character_set_system | utf8 $LANG決定 | | character_sets_dir | /app/mysql/share/charsets/ | +--------------------------+-----------------------------------+
?/etc/sysconfig/i18n中的LANG變量決定了 character_set_client、character_set_connection、character_set_results、character_set_system
my.cnf配置項
MySQL關鍵字?[mysqld]
character_set_server 決定了 character_set_database、character_set_server
character_set_filesystem 決定了 character_set_filesystem
set names utf8 決定了?character_set_client、character_set_connection、character_set_results
--default-character-set=utf8 效果跟set names utf8一樣
二、更改已有數據的字符集
MySQL substring,-- 1、建庫建表的語句導出,sed批量修改為utf8? ?
mysqldump -uroot -proot --default-character-set=latin1 -d zwq > destructer.sql
-- 2、導出所有數據
mysqldump -uroot -proot --quick --no-create-info --extended-insert --default-character-set=utf8 db_name >db_name_data.sql?
-- 3、修改mysql客戶端和服務端編碼為utf8
-- 4、刪除原有的庫表、數據
-- 5、導入新的建庫建表語句
-- 6、導入mysql的所有數據
三、安全的更新操作
為了防止不加where條件的update語句被執行,需要在 /etc/my.cnf 、 ~/.my.cnf 或 --defaults-file 指定的配置文件中加入
[mysql] safe-updates=TRUE
?四、將表移動到另一個庫中
-- 方式1
rename table school.student to zwq.student; -- 方式2 alter table zwq.student rename to school.student;
?