最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Windows下mysql 5.7 設(shè)置區(qū)分大小寫(敏感),設(shè)置默認(rèn)編碼 utf8mb4

 更新時(shí)間:2022年10月18日 18:15:44   作者:menkj  
最近需要將Windows下的mysql 5.7設(shè)置區(qū)分大小寫(敏感),設(shè)置默認(rèn)編碼 utf8mb4,需要的朋友可以參考下

修改編碼

c盤下搜索

C:\ProgramData\MySQL\MySQL Server 5.7

在該my.ini文件下進(jìn)行配置修改

[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'

區(qū)分大小寫

window下 改為2,

lower_case_table_names=2

最后保存 配置文件的時(shí)候注意 文件格式 ,類型 必須是 ANSI ,不小心保存成 utf-8 將不能啟動(dòng)服務(wù),

重啟mysql 服務(wù)ok

怎么從utf8轉(zhuǎn)換為utf8mb4

3.1 “偽”轉(zhuǎn)換

如果你的表定義和連接字符集都是utf8,那么直接在你的表上執(zhí)行

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

則能夠該表上所有的列的character類型變成 utf8mb4,表定義的默認(rèn)字符集也會(huì)修改。連接的時(shí)候需要使用set names utf8mb4便可以插入四字節(jié)字符。(如果依然使用 utf8 連接,只要不出現(xiàn)四字節(jié)字符則完全沒問題)。

上面的 convert 有兩個(gè)問題,一是它不能ONLINE,也就是執(zhí)行之后全表禁止修改,有關(guān)這方面的討論見 mysql 5.6 原生Online DDL解析;二是,它可能會(huì)自動(dòng)該表字段類型定義,如 VARCHAR 被轉(zhuǎn)成 MEDIUMTEXT,可以通過 MODIFY 指定類型為原類型。

另外 ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 這樣的語句就不要隨便執(zhí)行了,特別是當(dāng)表原本不是utf8時(shí),除非表是空的或者你確認(rèn)表里只有拉丁字符,否則正常和亂的就混在一起了。

最重要的是,你連接時(shí)使用的latin1字符集寫入了歷史數(shù)據(jù),表定義是latin1或utf8,不要期望通過 ALTER ... CONVERT ... 能夠讓你達(dá)到用utf8讀取歷史中文數(shù)據(jù)的目的,沒卵用,老老實(shí)實(shí)做邏輯dump。所以我才叫它“偽”轉(zhuǎn)換

3.2 character-set-server

一旦你決定使用utf8mb4,強(qiáng)烈建議你要修改服務(wù)端 character-set-server=utf8mb4,不同的語言對(duì)它的處理方法不一樣,c , php, python可以設(shè)置character-set,但java驅(qū)動(dòng)依賴于 character-set-server 選項(xiàng),后面有介紹。

同時(shí)還要謹(jǐn)慎一些特殊選項(xiàng),如 遇到騰訊云CDB連接字符集設(shè)置一個(gè)坑。個(gè)人不建議設(shè)置全局 init_connect。

key 768 long 錯(cuò)誤

字符集從utf8轉(zhuǎn)到utf8mb4之后,最容易引起的就是索引鍵超長的問題。

對(duì)于表行格式是 COMPACT或 REDUNDANT,InnoDB有單個(gè)索引最大字節(jié)數(shù) 768 的限制,而字段定義的是能存儲(chǔ)的字符數(shù),比如 VARCHAR(200) 代表能夠存200個(gè)漢字,索引定義是字符集類型最大長度算的,即 utf8 maxbytes=3, utf8mb4 maxbytes=4,算下來utf8和utf8mb4兩種情況的索引長度分別為600 bytes和800bytes,后者超過了768,導(dǎo)致出錯(cuò):Error 1071: Specified key was too long; max key length is 767 bytes。

COMPRESSED和DYNAMIC格式不受限制,但也依然不建議索引太長,太浪費(fèi)空間和cpu搜索資源。

如果已有定義超過這個(gè)長度的,可加上前綴索引,如果暫不能加上前綴索引(像唯一索引),可把該字段的字符集改回utf8或latin1。
但是,( 敲黑板啦,很重要 ),要防止出現(xiàn) Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '=' 錯(cuò)誤:連接字符集使用utf8mb4,但 SELECT/UPDATE where條件有utf8類型的列,且條件右邊存在不屬于utf8字符,就會(huì)觸發(fā)該異常。表示踩過這個(gè)坑。

再多加一個(gè)友好提示:EXPLAIN 結(jié)果里面的 key_len 指的搜索索引長度,單位是bytes,而且是以字符集支持的單字符最大字節(jié)數(shù)算的,這也是為什么 INDEX_LENGTH 膨脹厲害的一個(gè)原因。

到此這篇關(guān)于Windows下mysql 5.7 設(shè)置區(qū)分大小寫(敏感),設(shè)置默認(rèn)編碼 utf8mb4的文章就介紹到這了,更多相關(guān)mysql 5.7區(qū)分大小寫utf8mb4編碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL六種約束的示例詳解

    MySQL六種約束的示例詳解

    約束是作用于表中字段上的規(guī)則,用于限制存儲(chǔ)在表中的數(shù)據(jù)。這篇文章主要為大家整理了一下MySQL中六種約束的用法,感興趣的可以了解一下
    2023-02-02
  • cmd中MySQL中文數(shù)據(jù)亂碼問題解決方法

    cmd中MySQL中文數(shù)據(jù)亂碼問題解決方法

    MySQL是默認(rèn)utf8編碼的,所建數(shù)據(jù)庫也是設(shè)置utf8編碼,使用程序可以新增中文數(shù)據(jù),在cmd中使用SQL語句新增數(shù)據(jù)則報(bào)錯(cuò),有類似情況的朋友可以參考下本文
    2014-02-02
  • MySQL 根據(jù)條件多值更新的實(shí)現(xiàn)

    MySQL 根據(jù)條件多值更新的實(shí)現(xiàn)

    本文主要介紹了MySQL 根據(jù)條件多值更新的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • MySQL執(zhí)行事務(wù)的語法與流程詳解

    MySQL執(zhí)行事務(wù)的語法與流程詳解

    這篇文章主要介紹了MySQL執(zhí)行事務(wù)的語法與流程的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Ubuntu下mysql與mysql workbench安裝教程

    Ubuntu下mysql與mysql workbench安裝教程

    這篇文章主要為大家詳細(xì)介紹了Ubuntu下mysql與mysql workbench的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • MySQL進(jìn)行JSON查詢的詳細(xì)教程

    MySQL進(jìn)行JSON查詢的詳細(xì)教程

    在MySQL中,一般會(huì)使用特定的 JSON 路徑表達(dá)式語法來導(dǎo)航和提取 JSON 文檔中的數(shù)據(jù),本文將為大家詳細(xì)介紹一下具體的查詢方法,希望對(duì)大家有所幫助
    2025-03-03
  • mysql中的各種約束條件深入探討

    mysql中的各種約束條件深入探討

    在mysql中對(duì)編輯的數(shù)據(jù)進(jìn)行類型的限制,不滿足約束條件的報(bào)錯(cuò),本文給大家分享mysql中的各種約束條件,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-05-05
  • 基于mysql replication的問題總結(jié)

    基于mysql replication的問題總結(jié)

    本篇文章是對(duì)mysql中replication的問題進(jìn)行了詳細(xì)分析介紹,需要的朋友參考下
    2013-06-06
  • 淺談Mysql?tinyint(1)與tinyint(4)的區(qū)別

    淺談Mysql?tinyint(1)與tinyint(4)的區(qū)別

    本文主要介紹了淺談Mysql?tinyint(1)與tinyint(4)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • MySQL表鎖定問題的原因、檢測與解決方案

    MySQL表鎖定問題的原因、檢測與解決方案

    在數(shù)據(jù)庫管理系統(tǒng)中,鎖是保證數(shù)據(jù)一致性和事務(wù)隔離性的重要機(jī)制,然而,鎖的使用也可能導(dǎo)致性能問題,尤其是在高并發(fā)場景下,表鎖定(Table Locking)可能會(huì)成為系統(tǒng)的瓶頸,本文將深入探討MySQL中表鎖定的原因、如何檢測表鎖定問題,并提供有效的解決方案
    2025-01-01

最新評(píng)論

徐州市| 景洪市| 民勤县| 马龙县| 巴青县| 阳高县| 津市市| 德令哈市| 瑞丽市| 罗定市| 宁强县| 涡阳县| 蓝山县| 泽库县| 庄浪县| 福海县| 武川县| 定襄县| 容城县| 平顺县| 油尖旺区| 溧水县| 昌图县| 佳木斯市| 山东省| 松滋市| 新蔡县| 汾阳市| 隆子县| 登封市| 泰宁县| 梨树县| 易门县| 滁州市| 正宁县| 临武县| 化隆| 湟中县| 镇平县| 格尔木市| 岳池县|