欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
不可忽視的MySQL字符集

墨墨導讀:字符集是一組符號和編碼。collation是一組用于比較字符集中的字符的規則。

MySQL的字符集從latin1經(jīng)過(guò)utf8 到utf8mb4 ,算是經(jīng)歷曲折的路線(xiàn)。特別是從使用一個(gè)字符集變更另一個(gè)字符集時(shí),實(shí)踐當中都非常無(wú)奈,不是沒(méi)辦法,而是麻煩。到了MySQL8.0多出了一個(gè)字符集utf8mb4_0900_*的字符集,有必要了解一下。

1. 字符集基礎

先了解下MySQL字符集都有哪些地方使用,進(jìn)入數據庫VARIABLES參數一目了然:

mysql> SHOW VARIABLES WHERE variable_name LIKE '%character%' OR variable_name LIKE '%collation%' ;+-------------------------------+--------------------------------------+| Variable_name | Value |+-------------------------------+--------------------------------------+| character_set_client | utf8mb4 || character_set_connection | utf8mb4 || character_set_database | utf8mb4 || character_set_filesystem | binary || character_set_results | utf8mb4 || character_set_server | utf8mb4 || character_set_system | utf8 || character_sets_dir | /opt/idc/mysql8.0.23/share/charsets/ || collation_connection | utf8mb4_bin || collation_database | utf8mb4_bin || collation_server | utf8mb4_bin || default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci |+-------------------------------+--------------------------------------+

從上面client,connection,database,results層層環(huán)節扣著(zhù),任何一個(gè)環(huán)節的字符集不兼容都會(huì )出現亂碼問(wèn)題。

MySQL8.0 utf8mb4 Unicode字符集一個(gè)新的通用排序歸類(lèi),被命名為utf8mb4_0900_ai_ci。MySQL 8.0默認的是utf8mb4_0900_ai_ci,屬于 utf8mb4_unicode_ci中的一種。

這些字段每個(gè)意義,代表著(zhù)什么含義:

  • uft8mb4 表示用 UTF-8 編碼方案,每個(gè)字符最多占4個(gè)字節。
    utf8mb3也是Unicode字符集的UTF-8編碼,每個(gè)字符使用一到三個(gè)字節。(utf8: utf8mb3的別名)

  • 0900 就是Unicode 校對算法版本。(Unicode歸類(lèi)算法是用于比較符合Unicode標準要求的兩個(gè)Unicode字符串的方法)。

  • ai指的是口音不敏感。也就是說(shuō),排序時(shí)e,è,é,ê和?之間沒(méi)有區別,不區分重音。

  • ci表示不區分大小寫(xiě)。排序時(shí)p和P之間沒(méi)有區別。

再了解一下一些場(chǎng)景下 utf8 和 utf8mb4 的問(wèn)題點(diǎn):

utf8編碼最多支持3字節的數據,而emoji表情符, 偏生字是4個(gè)字節的utf8無(wú)法存儲的,致辭延伸出utf8mb4字符集解決這個(gè)問(wèn)題。

日常常用的字符集:

  • utf8mb4_bin:將字符串每個(gè)字符用二進(jìn)制數據編譯存儲,區分大小寫(xiě),而且可以存二進(jìn)制的內

  • utf8mb4_general_ci:ci即case insensitive,不區分大小寫(xiě)。沒(méi)有實(shí)現Unicode排序規則,在遇到某些特殊語(yǔ)言或字符集,排序結果可能不一致。但在絕大多數情況下,這些特殊字符的順序并不需要那么精確。

utf8mb4_unicode_ci:是基于標準的Unicode來(lái)排序和比較,能夠在各種語(yǔ)言之間精確排序,Unicode排序規則為了能夠處理特殊字符的情況,實(shí)現了略微復雜的排序算法。

2. 字符集配置

mysql字符集如何設置,更改操作:
1)my.cnf配置文件信息,建議初始化時(shí)就設置好。
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character-set-client-handshake = FALSE #此處是忽略客戶(hù)端的字符集,使用服務(wù)器的設置

2)init_connect='SET NAMES utf8mb4’ #服務(wù)器為每個(gè)連接的客戶(hù)端執行的字符串,對于一些超級管理源就不生效的

3)字符集變更,包含庫,表,column的變更。都可以完全的擁有自己的字符集。

##更改DATABASE ALTER DATABASE `db1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
##更改TABLE ALTER TABLE `t1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
##更改column字段 ALTER TABLE `t1` modify `name` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '昵稱(chēng)';

4)日常字符集檢查工作:

SELECT b.SCHEMA_NAME, b.DEFAULT_CHARACTER_SET_NAME, b.DEFAULT_COLLATION_NAME ,a.TABLE_NAME,a.TABLE_COLLATION FROM information_schema.SCHEMATA b left join information_schema.TABLES a on b.SCHEMA_NAME =a. TABLE_SCHEMA WHERE b.SCHEMA_NAME not in ('information_schema' ,'mysql','performance_schema', 'sys') ORDER BY TABLE_SCHEMA,TABLE_NAME ;

通過(guò)多方便設置,更改操作,檢查。字符集不再是隱藏問(wèn)題。

3. 字符集對于數據庫的影響

字符集對整個(gè)數據庫影響面還是比較可觀(guān)的。庫更改 對于原先存在的表字段 都不影響 依次類(lèi)推。所以數據庫>表>字段 都可以單獨設置字符集。


常見(jiàn)問(wèn)題1:有索引 沒(méi)有走 因為進(jìn)行了 字符集隱式轉換


常見(jiàn)問(wèn)題2:在尾隨空格方面不同

字符串值(CHAR、VARCHAR和TEXT)的比較與其他排序規則在尾隨空格方面不同。For example, 'a’ and 'a ’ 作為不同的字符串比較,而不是相同的字符串。

對于字符集排序來(lái)說(shuō),字符串末尾的空格也有對應的處理。

mysql> SELECT COLLATION_NAME, PAD_ATTRIBUTE FROM INFORMATION_SCHEMA.COLLATIONS WHERE CHARACTER_SET_NAME = 'utf8mb4';+----------------------------+---------------+| COLLATION_NAME | PAD_ATTRIBUTE |+----------------------------+---------------+| utf8mb4_general_ci | PAD SPACE || utf8mb4_bin | PAD SPACE || utf8mb4_unicode_ci | PAD SPACE || utf8mb4_icelandic_ci | PAD SPACE || utf8mb4_latvian_ci | PAD SPACE || .........| utf8mb4_0900_ai_ci | NO PAD || utf8mb4_de_pb_0900_ai_ci | NO PAD || utf8mb4_0900_bin | NO PAD |+----------------------------+---------------+

注意:在選擇使用utf8mb4_0900 字符集之后空格 就需要處理。


常見(jiàn)問(wèn)題3:對于數據的大小寫(xiě)敏感

除了lower_case_table_names之外,怎樣有效使用大小寫(xiě)字符集設置,采用ut8mb4_bin字符集 既可,查詢(xún)和數據插入解決。

常見(jiàn)問(wèn)題4:表情符,偏生字

常見(jiàn)錯誤代碼:1366 Incorrect string value: '\xF0\x9F\x99\x82’ for column 'name’ at row 2
指定Utf8mb4字符集,再配合character-set-client-handshake屬性

備注:對于jdbc來(lái)說(shuō)沒(méi)有utf8mb4這樣的字符集說(shuō)法。

4. 總結

從初期安裝開(kāi)始,就需要配置好字符集,8.0版本的utf8mb4_0900目前為止也沒(méi)有類(lèi)似的bug之類(lèi)的,但還需要謹慎使用。選擇utf8mb4_unicode_ci即可。

一件件小事,積累起來(lái)就是變成大事。

作者

崔虎龍:云和恩墨MySQL技術(shù)顧問(wèn),長(cháng)期服務(wù)于金融、游戲、物流等行業(yè)的數據中心,設計數據存儲架構,并熟悉數據中心運營(yíng)管理的流程及規范,自動(dòng)化運維等。擅長(cháng)MySQL、Redis、MongoDB數據庫高可用設計和運維故障處理、備份恢復、升級遷移、性能優(yōu)化。自學(xué)通過(guò)了MySQL OCP 5.6和MySQL OCP 5.7認證。2年多開(kāi)發(fā)經(jīng)驗,10年數據庫運維工作經(jīng)驗,其中專(zhuān)職做MySQL工作8年;曾經(jīng)擔任過(guò)項目經(jīng)理、數據庫經(jīng)理、數據倉庫架構師、MySQL技術(shù)專(zhuān)家、DBA等職務(wù);涉及行業(yè):金融(銀行、理財)、物流、游戲、醫療、重工業(yè)等。

墨天輪原文鏈接:https://www.modb.pro/db/45313(復制到瀏覽器中打開(kāi)或者點(diǎn)擊“閱讀原文”立即查看)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
綜合網(wǎng)上解決mysql 5.7保存emoji 失敗問(wèn)題
批量修改MySQL表字符集和排序規則
MySQL 字符集支持
主題:關(guān)于MySql字符集的問(wèn)題
再見(jiàn)亂碼:5分鐘讀懂MySQL字符集設置
pommo mailinglist - 網(wǎng)站設計 - 設計管理在線(xiàn) |設計管理至關(guān)重要|設...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久