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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL字符集(表情包)

發布時間:2023/12/8 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL字符集(表情包) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄

1. 問題 - MySQL插入表情包符號

2、解決方法

2.1針對字段修改編碼格式(推薦使用)

2. 2、整個數據庫修改編碼格式

3. MySQL字符集

3.1 數據庫字符集?

3.1.1查看當前數據庫字符集配置:

3.1.2 修改數據庫編碼格式

3.2 表的編碼?

3.2.1?參看表的編碼格式

3.2.2修改表的編碼格式

3.3 字段的編碼

3.3.1 看字段編碼格式

3.3.2 修改字段的編碼格式

4. 可能的問題

4.1? ALTER TABLE `tbl` DEFAULT CHARACTER SET utf8 ; 字段編碼格式未生效

4.2 對表DDL時,會鎖表 -- (pt-online-schema-change)


?

1. 問題 - MySQL插入表情包符號

剛上mysql,經常發生前段傳過來的內容入庫發生異常,數據庫報:

java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x8C\xB8’ for column ‘mechant_name’ at row 1

發現,數據庫建表時候,用的是utf8字符集,傳進來了表情包,表情包是4個字節的;

通常情況,Mysql數據編碼格式為“utf-8”,對于漢字來說足夠;Mysql中utf8占3個字節,但是,3個字節對于表情符號是不夠的,需4個字節;此時使用utf8,會出現‘\xF0\x9F\x8D\x83\xF0\x9F’的問題。

?

2、解決方法

? ? ? ??utf8mb4編碼是utf8編碼的超集,兼容utf8,并且能存儲4字節的表情字符。?

?

2.1針對字段修改編碼格式(推薦使用)

????????數據庫表對應字段上修改編碼格式為utf8mb4,命令示例如下:

ALTER TABLE insure_user CHANGE nickname nickname VARCHAR(64) CHARACTER SET utf8mb4 ;?

?

?

2. 2、整個數據庫修改編碼格式

修改數據庫表的編碼格式,修改為utf8mb4;修改Mysql配置文件my.cnf(windows下為my.ini),然后重啟數據庫
?

?

3. MySQL字符集

3.1 數據庫字符集?

3.1.1查看當前數據庫字符集配置:

show variables like 'character%'

?

3.1.2 修改數據庫編碼格式

alter database databasename character set utf8

或者,直接修改mysql的配置文件?my.cnf?

[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4

3.2 表的編碼?

3.2.1?參看表的編碼格式

show create table table_name

可以輸出完整的建表語句,看其中的 “DEFAULT CHARACTER”項;

3.2.2修改表的編碼格式

alter table tablename character set utf8

?

3.3 字段的編碼

3.3.1 看字段編碼格式

show full columns from tableName

看 Collation列;

3.3.2 修改字段的編碼格式

alter table tablename modify fieldname varchar(50) character set utf8

?

4. 可能的問題

4.1? ALTER TABLE `tbl` DEFAULT CHARACTER SET utf8 ; 字段編碼格式未生效

雖然使用 ALTER TABLE `tbl` default character set utf8, 將表的編碼格式修改成了utf8; 但是 字段的編碼格式并沒有修改過來;

修改字段的編碼格式:

ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL;

將現有數據,轉換成新的編碼格式:

alter table `tablename` convert to character set utf8;

4.2 對表DDL時,會鎖表 -- (pt-online-schema-change)

MySQL進行DDL操作時(修改字段類型、長度、編碼等等,都屬于DDL操作),MySQL會鎖表;

如果數據量小的表,沒有什么影響;如果數據量大(1w條記錄以上?),就會對當前表的操作產生明顯的影響;尤其是千萬級,上億的表,影響更大;

看介紹,使用 pt-online-schema-change 在線DDL工具,可以減少影響(只是減少影響,而不是完全避免影響);

pt-oneline-schema-change 自己沒使用過,搞個鏈接過來吧,寫著挺清晰的

https://www.cnblogs.com/allenhu320/p/11358652.html

?

?

?

總結

以上是生活随笔為你收集整理的MySQL字符集(表情包)的全部內容,希望文章能夠幫你解決所遇到的問題。

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