1. ホーム
  2. mysql

[解決済み】データベース全体のCHARACTER SET(およびCOLLATION)を変更する方法は?

2022-04-19 13:05:11

質問

前のプログラマーがテーブル(Mysql)に間違った照合順序を設定しました。彼は、UTF8であるべきところをLatin照合順序で設定したため、問題が発生しました。中国と日本の文字を含むすべてのレコードが「?」文字に変わります。

照合順序を変更し、文字の詳細を取り戻すことは可能ですか?

解決方法を教えてください。

データベースの照合順序を変更する。

ALTER DATABASE <database_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

テーブルの照合順序を変更します。

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

列の照合順序を変更します。

ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;


の部分はどうなっているのでしょうか? utf8mb4_0900_ai_ci の意味は?

3 bytes -- utf8
4 bytes -- utf8mb4 (new)

v4.0 --   _unicode_
v5.20 --  _unicode_520_
v9.0 --   _0900_ (new)

_bin      -- just compare the bits; don't consider case folding, accents, etc
_ci       -- explicitly case insensitive (A=a) and implicitly accent insensitive (a=á)
_ai_ci    -- explicitly case insensitive and accent insensitive
_as (etc) -- accent-sensitive (etc)

_bin         -- simple, fast
_general_ci  -- fails to compare multiletters; eg ss=ß, somewhat fast
...          -- slower
_0900_       -- (8.0) much faster because of a rewrite

詳細はこちら