[英]character set utf8mb4 collate utf8mb4_general_ci does not accept words with accents
[英]Change column collate from utf8mb4_general_ci to utf8mb4_bin corrupt the table
由於某些原因(需要區分重音),我們需要在 mysql 數據庫(mysql 和 mariadb)上將列的排序規則從 utf8mb4_general_ci 更改為 utf8mb4_bin。 所以我們只是執行這個請求:
ALTER TABLE table MODIFY column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
此列具有唯一索引。 這在多個環境中完美運行,但是我們不知道為什么會破壞其他一些環境上的數據(顯然是生產環境......):
Corruption of an index tree: table `db`.`table` index `unique_column`, father ptr page no 640, child page no 683 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
有誰知道為什么? 我們無法重現,並且 prod 環境不是測試的好地方...也許是數據問題,因為當我們重新導入該數據庫的轉儲時,它可以正常工作,但是如何找到這個數據問題?
謝謝 ! (對不起,我的英語不好)
問題解決了,我們刪除唯一索引,更改排序規則並重新創建索引。 問題解決了,但我們不明白為什么我們需要在少數數據庫上這樣做......
如果您只想更改一列:
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.