欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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é)字符則完全沒(méi)問(wèn)題)。

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

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

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

3.2 character-set-server

一旦你決定使用utf8mb4,強(qiáng)烈建議你要修改服務(wù)端 character-set-server=utf8mb4,不同的語(yǔ)言對(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之后,最容易引起的就是索引鍵超長(zhǎng)的問(wèn)題。

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

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

如果已有定義超過(guò)這個(gè)長(zhǎng)度的,可加上前綴索引,如果暫不能加上前綴索引(像唯一索引),可把該字段的字符集改回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ā)該異常。表示踩過(guò)這個(gè)坑。

再多加一個(gè)友好提示:EXPLAIN 結(jié)果里面的 key_len 指的搜索索引長(zhǎng)度,單位是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增量恢復(fù)的幾種實(shí)現(xiàn)方法

    MySql增量恢復(fù)的幾種實(shí)現(xiàn)方法

    本文主要介紹了MySql增量恢復(fù)的幾種實(shí)現(xiàn)方法,通過(guò)增量備份與恢復(fù),可以在系統(tǒng)發(fā)生故障或數(shù)據(jù)損壞時(shí)快速恢復(fù)到最新狀態(tài),提高系統(tǒng)的可靠性和可用性,感興趣的可以了解一下
    2023-08-08
  • MySQL 如何使用事務(wù)

    MySQL 如何使用事務(wù)

    這篇文章主要介紹了MySQL 如何使用事務(wù),幫助大家更好的理解和學(xué)習(xí)MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • MySQL的加密解密的幾種方式(小結(jié))

    MySQL的加密解密的幾種方式(小結(jié))

    這篇文章主要介紹了MySQL的加密解密的幾種方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL新建用戶中的%到底包不包括localhost?

    MySQL新建用戶中的%到底包不包括localhost?

    操作MySQL的時(shí)候發(fā)現(xiàn),有時(shí)只建了%的賬號(hào),可以通過(guò)localhost連接,有時(shí)候卻不可以,網(wǎng)上搜索也找不到滿意的答案,干脆手動(dòng)測(cè)試一波
    2019-02-02
  • mysql如何導(dǎo)出服務(wù)器內(nèi)所有的數(shù)據(jù)庫(kù)

    mysql如何導(dǎo)出服務(wù)器內(nèi)所有的數(shù)據(jù)庫(kù)

    這篇文章主要介紹了mysql如何導(dǎo)出服務(wù)器內(nèi)所有的數(shù)據(jù)庫(kù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache

    mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache

    MySQL服務(wù)器端的參數(shù)有很多,但是對(duì)于大多數(shù)初學(xué)者來(lái)說(shuō),眾多的參數(shù)往往使得我們不知所措,但是哪些參數(shù)是需要我們調(diào)整的,哪些對(duì)服務(wù)器的性能影響最大呢
    2016-05-05
  • mysql聯(lián)合索引的使用規(guī)則

    mysql聯(lián)合索引的使用規(guī)則

    本文主要介紹了mysql聯(lián)合索引的具體使用,結(jié)合實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • MySQL btree索引與hash索引區(qū)別

    MySQL btree索引與hash索引區(qū)別

    這篇文章主要介紹了MySQL btree索引與hash索引區(qū)別,幫助大家更好的理解和學(xué)習(xí)MySQL索引的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • MySQL中常見關(guān)鍵字的用法總結(jié)

    MySQL中常見關(guān)鍵字的用法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了MySQL中常見關(guān)鍵字的用法,例如GROUP BY、ORDER BY和LIMIT,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-09-09
  • mysql 數(shù)據(jù)庫(kù)基礎(chǔ)筆記

    mysql 數(shù)據(jù)庫(kù)基礎(chǔ)筆記

    mysql 數(shù)據(jù)庫(kù)基礎(chǔ)筆記,剛開始接觸mysql的朋友可以參考下
    2012-07-07

最新評(píng)論