簡體   English   中英

使用帶有utf8表的SET NAMEs utf8mb4

[英]Working with SET NAMES utf8mb4 with utf8 tables

在基於Mysql 5.5.57 Php 5.6.37的大型系統中

當前,整個系統都在utf8中運行,包括在每個數據庫連接開始處的SET NAMEs utf8。

我需要在其中一張表中支持表情符號,因此需要將其切換為utf8mb4。 我不想切換其他表格。

我的問題是-如果我將所有連接(utf8和utf8mb4)的設置名稱更改為utf8mb4,並將特定表僅切換到utf8mb4(並且僅將mb4數據寫入此表)。 系統的其余部分會像以前一樣工作嗎?

使用utf8表/數據/連接中的SET NAMEs utf8mb4會不會有任何問題?

我認為對所有連接使用SET NAMES utf8mb4應該沒有問題。

utf8mb3是MySQL中utf8的同義詞;為清楚起見,我將使用前者。)

utf8mb3的一個子集utf8mb4 ,讓您的客戶端的字節會很樂意無論哪種方式(除了表情符號,這需要utf8mb4)。 當字節到達(或來自)僅聲明的列時,將進行檢查以確認您沒有存儲表情符號或某些中文字符,但是否則,它會以最小的麻煩進行。

我建議

 ALTER TABLE ... CONVERT TO utf8mb4

作為轉換表的“正確”方法。 但是,它將轉換所有 varchar / text列。 可能不好

如果你JOIN一個轉換表,未轉換的表,那么你將試圖來比較utf8mb3字符串到utf8mb4字符串。 MySQL將舉手並把所有行從一個轉換為另一個。 那不是INDEX有用的。

所以...確保至少與JOINs中涉及的任何保持一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM