MySQL修改字符集步骤(字段插入中文提示错误时解决办法)
在實際應用中,如果一開始沒有正確的設置字符集,在運行一段時間以后,才發現當前字符集不能滿足要求,需要進行調整,但又不想丟棄這段時間的數據,這個時候就需要修改字符集。
在《MySQL設置默認字符集和校對規則》一節我們講到,ALTER DATABASE 或 ALTER TABLE 命令對已經存在的數據沒有作用,只對新創建的表或記錄生效。如果想修改已存在數據的字符集,需要先將數據導出,經過適當的調整后,再重新導入。
例 1
以下模擬的是將 gb2312 字符集的數據庫修改成 gbk 字符集的數據庫的過程。
1)創建 testset 數據庫,設置其字符集為 gb2312,并添加數據。
2)導出 testset 表結構,命令如下:
mysqldump -uroot -p --default-character-set=gbk -d test testset> D:\testset.sql
其中,--default-character-set=gbk 表示以什么字符集連接;-d 表示只導出表結構,不導出數據。
3)打開 testset.sql 文件,修改表結構定義中的字符集為新的字符集,如下圖所示。
?
4)確保表中的記錄不再更新,導出所有記錄。
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=gb2312 test testset> D:\testdata.sql
- --quick:該選項用于存儲記錄多的表。它強制 mysqldump 從服務器一次一行地查詢表中的行,而不是查詢所有行,并在輸出前將它緩存到內存中。
- --extended-insert:使用?INSERT 插入多行數據語法。可以使文件更小,導入文件時加速插入。
- --no-create-info:不導出表的 CREATE TABLE 語句。
- --default-character-set=gb2312:按照原有的字符集導出所有數據。這樣導出的文件中,所有中文都是可見的,不會保存成亂碼。
5)打開 testdata.sql,將 SET NAMES gb2312?修改成 SET NAMES gbk,如下圖所示。
?
6)使用新的字符集創建新的數據庫。
CREATE DATABASE test2 DEFAULT CHARSET gbk;
7)創建表,執行 testset.sql。
mysql -uroot -p test2 < D:\testset.sql
8)導入數據,執行 testdata.sql。
mysql -uroot -p test2 < D:\testdata.sql
9)查看 testset 表結構是否修改了字符集,以及表內數據是否丟失或亂碼,SQL 語句和運行結果如下:
注意:選擇目標字符集的時候,要注意最好的是原字符集的超集,或者確定比原字符集的字庫更大,否則如果目標字符集的字庫小于原字符集的字庫,那么目標字符集中不支持的字符導入后會變成亂碼,丟失一部分數據。
總結
以上是生活随笔為你收集整理的MySQL修改字符集步骤(字段插入中文提示错误时解决办法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决:Do not use built-
- 下一篇: mysql数据库提示本地无法连接远程服务