- 環境 : MySQL 8.0.20
事象:変数を条件に使ったSQLを書いたファイルを実行したら怒られた
hoge.sql
SET @no = "0531";
select * from person_table WHERE person_no = @no;
mysql> source hoge.sql
Query OK, 0 rows affected (0.01 sec)
ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
原因 : 照合順序がカラムと変数で不一致だから
- 参考
対応 : 変数をSETするときに照合順序も指定する
hoge.sql
SET @no = "0531" COLLATE utf8mb4_general_ci;
select * from person_table WHERE person_no = @no;