MySQL 照合順序の指定エラー Error Code: 1253

collate utf8_unicode_ci

utfbm4 のキャラクタコードに対してこの collate を指定するとエラーになる、
Error Code: 1253. COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'utf8mb4'
以下でデーターベースがどうなっているか確認する

SHOW VARIABLES LIKE 'character_set_database';

+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set (0.00 sec)

データベース、グローバレベルの collation を確認すると、

show global variables like 'collation_server';

+------------------------+--------------------+
| Variable_name          | Value              |
+------------------------+--------------------+
| character_set_database | utf8mb4_0900_ai_ci |
+------------------------+--------------------+

MySQL 5.7 のデフォルト・キャラクタコード を utf8mb4 にしていたら
デフォルトの collation は、utf8mb4_general_ci でした。
しかし、MySQL 8.0 以降は、デフォルト・キャラクタコード = utf8mb4 に対して
デフォルトの collation = utf8mb4_0900_ai_ci になります。

0900 は、Unicode のバージョン 9.00 を示してます。
_ai は、Accent Insensitive の略、アクセントの違いを区別しません。
_ci は、Case Insensitive の略、大文字小文字区別しない。

https://dev.mysql.com/doc/refman/8.0/ja/charset-collation-names.html
に、照合の命名規則が書いてあります。

サフィックス 意味
_ai アクセントを区別しない
_as アクセントを区別する
_ci 大文字小文字を区別しない
_cs Case-sensitive
_ks カナを区別する
_bin バイナリ

collation で大文字小文字を区別しない厳格なバイナリ照合なら utf8mb4_bin を使います。

utf8mb4_0900_ai_ci
'あ' → 'ア', 'ア' にマッチする
'は' → 'バ', 'パ' にマッチする
大文字小文字区別しない

utf8mb4_0900_as_ci
'あ' → 'ア', 'ア' にマッチする、
'は' → 'バ', 'パ' にマッチしない
大文字小文字区別しない

utf8mb4_0900_as_cs
'あ' → 'ア', 'ア' にマッチしない
'は' → 'バ', 'パ' にマッチしない
大文字小文字区別する

utf8mb4_0900_ai_cs という照合順序は、存在しません。
utf8mb4_0900_cs という照合順序は、存在しません。

utf8mb4_unicode_ci
'あ' → 'ア', 'ア' にマッチする
'は' → 'バ', 'パ' にマッチする
大文字小文字区別しない

utf8mb4_unicode_cs という照合順序は、存在しません。
utf8mb4_unicode_ai という照合順序は、存在しません。
utf8mb4_unicode_as という照合順序は、存在しません。
utf8mb4_unicode_ai_ci という照合順序は、存在しません。
utf8mb4_unicode_as_ci という照合順序は、存在しません。

utf8mb4_general_ci
'あ' → 'ア', 'ア' にマッチしない
'は' → 'バ', 'パ' にマッチしない
大文字小文字区別しない

utf8mb4_general_cs という照合順序は、存在しません。

また、MySQL のマニュアルに、キャラクタコードセット utf8 を例に以下の説明で記載されてます。
utf8_unicode_ci では、縮約および無視可能な文字もサポートされています。
utf8_general_ci は、拡張、縮小または無視可能な文字をサポートしないレガシー照合です。
文字間で 1 対 1 の比較しかできません。