日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL修改字符集步骤(字段插入中文提示错误时解决办法)

發布時間:2023/12/18 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL修改字符集步骤(字段插入中文提示错误时解决办法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在實際應用中,如果一開始沒有正確的設置字符集,在運行一段時間以后,才發現當前字符集不能滿足要求,需要進行調整,但又不想丟棄這段時間的數據,這個時候就需要修改字符集。

在《MySQL設置默認字符集和校對規則》一節我們講到,ALTER DATABASE 或 ALTER TABLE 命令對已經存在的數據沒有作用,只對新創建的表或記錄生效。如果想修改已存在數據的字符集,需要先將數據導出,經過適當的調整后,再重新導入。

例 1

以下模擬的是將 gb2312 字符集的數據庫修改成 gbk 字符集的數據庫的過程。

1)創建 testset 數據庫,設置其字符集為 gb2312,并添加數據。

mysql> CREATE TABLE test.testset(-> id INT(11) DEFAULT NULL,-> name VARCHAR(25) DEFAULT NULL-> )CHARSET=gb2312; Query OK, 0 rows affected (0.10 sec)mysql> INSERT INTO test.testset VALUES (1,'C語言'); Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO test.testset VALUES (2,'Java語言'); Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO test.testset VALUES (3,'Python語言'); Query OK, 1 row affected (0.01 sec)

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 插入多行數據語法??梢允刮募?#xff0c;導入文件時加速插入。
  • --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> SHOW CREATE TABLE test2.testset \G *************************** 1. row ***************************Table: testset Create Table: CREATE TABLE `testset` (`id` int(11) DEFAULT NULL,`name` varchar(25) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gbk 1 row in set (0.00 sec)mysql> SELECT * FROM test2.testset; +------+------------+ | id | name | +------+------------+ | 1 | C語言 | | 2 | Java語言 | | 3 | Python語言 | +------+------------+ 3 rows in set (0.00 sec)

注意:選擇目標字符集的時候,要注意最好的是原字符集的超集,或者確定比原字符集的字庫更大,否則如果目標字符集的字庫小于原字符集的字庫,那么目標字符集中不支持的字符導入后會變成亂碼,丟失一部分數據。

總結

以上是生活随笔為你收集整理的MySQL修改字符集步骤(字段插入中文提示错误时解决办法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。