今日も壁にぶち当たり、解決に要した時間が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'