LoginSignup
0
3

More than 5 years have passed since last update.

MySQLの#1273のエンコードエラーについて

Posted at

今日も壁にぶち当たり、解決に要した時間が6時間ほど。
今回はデータベースのエンコードが原因だったようです。

同じようなエラーに当たった際のため、メモを残します。

今回のエラー内容

phpmysql error - #1273 - #1273 - Unknown collation: 'utf8mb4_general_ci'

phpmysql error - #1273 - #1273 - Unknown collation: 'utf8mb4_unicode_ci'

このようなエラーがでました。
データベースのエンコードとサーバー?のエンコードが違って表示できないよ、みたいなエラーかなと思いました。

解決方法

database_interface.lib.phpを編集します。
これがutf8mb4形式のエンコードを指定する原因コードだったようです。

別のファイル名を持っている場合もあるようなので、場合によって似たようなファイルを探すことで解決できることもありそうです。
(DatabaseInterface.class.phpなどもこの仲間)

utfmb4などでファイル内検索して、適当なところを見つけたら

if (PMA_MYSQL_INT_VERSION >  50503) {
        $default_charset = 'utf8mb4';
        $default_collation = 'utf8mb4_general_ci';
    } else {
        $default_charset = 'utf8';
        $default_collation = 'utf8_general_ci';
    }

このようなif文があったりするところを

//if (PMA_MYSQL_INT_VERSION >  50503) {
    //    $default_charset = 'utf8mb4';
    //    $default_collation = 'utf8mb4_general_ci';
    //} else {
        $default_charset = 'utf8';
        $default_collation = 'utf8_general_ci';
    //}

このようにコメントアウトしてしまいます。
細かい理由は考えていません。こうしたら解決しましたというメモ。
ご利用は自己責任でお願いします。

もう少し慣れたら理由もわかるといいなと。。

参考にさせてもらったページ

phpmysql error - #1273 - #1273 - Unknown collation: 'utf8mb4_general_ci'

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3