Mysql 檢視修改資料庫,表,欄位編碼
阿新 • • 發佈:2018-12-16
檢視資料庫編碼
# 需要指定資料庫
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