1. 程式人生 > >Mysql 檢視修改資料庫,表,欄位編碼

Mysql 檢視修改資料庫,表,欄位編碼

檢視資料庫編碼

# 需要指定資料庫
USE db_name;
SELECT @@character_set_database, @@collation_database;
# 不需要指定資料庫
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';

查看錶編碼

# 檢視單個表方法1
USE db_name;
SHOW CREATE TABLE table_name;

# 檢視單個表方法2
SELECT T.table_name , CCSA.character_set_name FROM information_schema.tables T,information_schema.collation_character_set_applicability CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "db_name" AND T.table_name = "table_name"; # 檢視指定的資料庫所有表 SELECT T.table_name , CCSA.character
_set_name FROM information_schema.tables T,information_schema.collation_character_set_applicability CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "db_name"; # 檢視所有的資料庫所有表 SELECT T.table_schema, T.table_name , CCSA.character_set_name FROM information_schema.tables T,information_schema.collation
_character_set_applicability CCSA WHERE CCSA.collation_name = T.table_collation; ## 查看錶中某個欄位編碼 SELECT table_schema, table_name, character_set_name FROM information_schema.columns WHERE table_schema = "db_name" AND table_name = "table_name" AND column_name = "column_name"; ## 查看錶中所有欄位編碼,檢視資料庫中所有表所有欄位編碼 ## 依次去除上面語句中查詢條件

修改資料庫編碼到UTF8

ALTER DATABASE db_name CHARACTER SET utf8;

轉換表和表的列編碼到UTF8

USE db_name;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;

批量轉換表和表的列編碼到UTF8

#!/bin/bash
echo "輸入Mysql管理員密碼"
read -s dbpwd
echo "輸入要修改的資料庫"
read db
# 修改DB編碼
mysql -uroot -p${dbpwd} -e "ALTER DATABASE ${db} CHARACTER SET utf8;"
# 匯出表到臨時檔案
mysql -uroot -p${dbpwd} -e "USE ${db};SHOW TABLES" > _tmp_${db}_to_utf8
# 處理每個表
for line in `cat _tmp_${db}_to_utf8`
do
    # 跳過匯出結果中的表頭
    if [ "$line" == "Tables_in_${db}" ]
    then
        continue
    fi
    mysql -uroot -p${dbpwd} ${db} -e "ALTER TABLE ${line} CONVERT TO CHARACTER SET utf8;"
done

修改Mysql預設編碼

/etc/mysql/mysql.conf.d/mysqld.cnf

# 在[mysqld]節下面新增一行
character-set-server=utf8

/etc/mysql/conf.d/mysql.cnf

# 在[mysql]節下面新增一行
default-character-set=utf8

重啟mysql