mysql修改資料庫編碼
MySQL中,資料庫的編碼是一個相當重要的問題,有時候我們需要查看一下當前資料庫的編碼,甚至需要修改一下資料庫編碼。
查看當前資料庫編碼的SQL語句為:
mysql> use xxx
Database changed
mysql> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)
上面,我們先切換到xxx資料庫下面來,然後使用SQL語句:show variables like 'character_set_database'; 來查看了xxx資料庫的編碼。查詢得到的結果是latin1編碼。
下面,我們來修改xxx資料庫的編碼,把它修改為gb2312。
mysql> alter database xxx CHARACTER SET gb2312;
Query OK, 1 row affected (0.00 sec)
mysql> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| character_set_database | gb2312 |
+------------------------+--------+
1 row in set (0.00 sec)
這里同樣做了兩件事情:
1、使用SQL語句:alter database xxx CHARACTER SET gb2312; 把xxx資料庫的編碼設置為了gb2312.
2、再次使用show variables like 'character_set_database'; 來確認一下當前xxx是什麼編碼。經過確認,資料庫編碼已經修改為gb2312了。
2. 如何通過命令修改mysql資料庫默認編碼為gb2312
用alter語句.
如果資料庫已經有數據表了,
那每個表都要修改.
(修改資料庫的字元集不會改變原有數據表的字元集)
utf8:
alter
database
`資料庫`
default
character
set
utf8
collate
utf8_general_ci
alter
table
`數據表`
default
character
set
utf8
collate
utf8_general_ci
gbk
(包含gb2312):
alter
database
`資料庫`
default
character
set
gbk
collate
gbk_chinese_ci
alter
table
`數據表`
default
character
set
gbk
collate
gbk_chinese_ci
3. 如何修改mysql資料庫中某一個表的編碼
利用sql語句進行修改,舉例說明:
1、ALTER
TABLE
`test`
DEFAULT
CHARACTER
SET
utf8;該命令用於將表test的編碼方式改為utf8;
2、ALTER
TABLE
`test`
CHANGE
`name`
`name`
VARCHAR(36)
CHARACTER
SET
utf8
NOT
NULL;
該命令用於將表test中name欄位的編碼方式改為utf8
4. MySQL資料庫編碼修改
對於有數據的表,不能修改編碼,否則裡面的數據會成為亂馬,一般的方法是把所有數據保存到文本文件裡面,清空數據後修改編碼,然後重新裝入數據。
5. 如何改變mysql資料庫的編碼方式
1. 查看MySQL資料庫的默認編碼
有如下兩種方式,
(1)使用status命令
mysql> status;
圖1 status命令
(2)使用show variables命令
mysql> show variables like 'char%';
圖2 show variables命令
如果要查看某個資料庫的編碼,在運行上面的命令前,應先執行use db_name;命令切換資料庫(db_name為要查看的資料庫名)。
2. 改變MySQL資料庫的默認編碼
安裝MySQL資料庫時的默認編碼是latin1,實際使用時可能要使用其他編碼。下文描述如何將默認編碼改為utf8:
首先修改MySQL的配置文件/etc/mysql/my.cnf:
在[client]下追加:
default-character-set=utf8
在[mysqld]下追加:
character-set-server=utf8
在[mysql]下追加:
default-character-set=utf8
修改完畢後,使用如下命令之一重啟mysql服務:
service mysql restart
/etc/init.d/mysql restart
改變後,之前手工創建的資料庫如未顯式指定編碼,則其編碼仍是默認的latin1,可使用如下命令更改編碼:
mysql> alter database db_name CHARACTER SET utf8;
參考資料:
[1] http://www.2cto.com/os/201404/292378.html
6. 如何mysql 5.7的編碼設置成utf8mb4
整理 MySQL 8.0 文檔時發現一個變更:
默認字元集由 latin1 變為 utf8mb4。想起以前整理過字元集轉換文檔,升級到 MySQL 8.0 後大概率會有字元集轉換的需求,在此正好分享一下。
當時的需求背景是:
部分系統使用的字元集是 utf8,但 utf8 最多隻能存 3 位元組長度的字元,不能存放 4 位元組的生僻字或者表情符號,因此打算遷移到 utf8mb4。
遷移方案一1. 准備新的資料庫實例,修改以下參數:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#連接建立時執行設置的語句,對super許可權用戶無效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#設置服務端校驗規則,如果字元串需要區分大小寫,設置為utf8mb4_binskip-character-set-client-handshake#忽略應用連接自己設置的字元編碼,保持與全局設置一致## Innodb Settingsinnodb_file_format = Barracudainnodb_file_format_max = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON#允許索引的最大位元組數為3072(不開啟則最大為767位元組,對於類似varchar(255)欄位的索引會有問題,因為255*4大於767)
2. 停止應用,觀察,確認不再有數據寫入
可通過 show master status 觀察 GTID 或者 binlog position,沒有變化則沒有寫入。
3. 導出數據
先導出表結構:mysqlmp -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb > /backup/testdb.sql
後導出數據:mysqlmp -u -p --no-create-info --master-data=2 --flush-logs --routines --events --triggers --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --database testdb > /backup/testdata.sql
4. 修改建表語句
修改導出的表結構文件,將表、列定義中的 utf8 改為 utf8mb4
5. 導入數據
先導入表結構:mysql -u -p testdb < /backup/testdb.sql
後導入數據:mysql -u -p testdb < /backup/testdata.sql
6. 建用戶
查出舊環境的資料庫用戶,在新資料庫中創建
7. 修改新資料庫埠,啟動應用進行測試
關閉舊資料庫,修改新資料庫埠重啟,啟動應用
7. 如何更改MySQL資料庫編碼為UTF-8或者GB2312
mysql 創建 資料庫時指定編碼很重要,很多開發者都使用了默認編碼,亂碼問題可是防不勝防。制定資料庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。
網頁數據一般採用UTF8編碼,而資料庫默認為latin 。我們可以通過修改資料庫默認編碼方式為UTF8來減少資料庫創建時的設置,也能最大限度的避免因粗心造成的亂碼問題。
我們遵循的標準是,資料庫,表,欄位和頁面或文本的編碼要統一起來
我們可以通過命令查看資料庫當前編碼:
mysql> SHOW VARIABLES LIKE 'character%';
發現很多對應的都是latin1,我們的目標就是在下次使用此命令時latin1能被UTF8取代。
第一階段:
mysql設置編碼命令
[sql]view plain
SETcharacter_set_client=utf8;
SETcharacter_set_connection=utf8;
SETcharacter_set_database=utf8;
SETcharacter_set_results=utf8;
SETcharacter_set_server=utf8;
- 然後mysql> SHOW VARIABLES LIKE 'character%';你可以看到全變為utf8 。
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:Program FilesMySQLMySQL Server 5.0sharecharsets |
+--------------------------+---------------------------------------------------------+
8 rows in set
8. mysql 更改資料庫的編碼
mysql支持中文欄位的。我的mysql就是gb2312的編碼方式,上面的建表語句能建表。。最簡單的方式就是修改配置文件,先關閉mysql的服務。打開mysql的安裝目錄。裡面有個my.ini的。打開它。。將下面的那個charater-set設置為gb2312default-character-set=gb2312還有default-character-set=gb2312修改好這兩個設置後。啟動服務。搞掂、、、我也是怎麼設來的!!
9. 如何修改mysql資料庫的編碼格式
1.去mysql下找到文件my.ini配置文件用記事本打開,找到 default-character-set=latin1,character-set-server=latin1;將latin1改為utf-8或者gbk,修改完之後保存。
2.我的電腦右擊 「管理」進入之後選擇「服務和應用程序」下的「服務」,找到「mysql」之後右擊選擇「重新啟動」。