phpMyAdmin5.0.1のエクスポートエラー解決方法
phpMyAdmin5.0.1のエクスポートエラー解決方法です。
XAMPPのバージョンを XAMPP7.4.1 にて発生した現象です。phpMyAdminでエクスポートを実行し、ダウンロードされたsqlファイルを開くと下図のような状態でした。
Fatal error: Uncaught TypeError: mb_detect_encoding() expects parameter 1 to be string, bool given in D:/xampp/phpMyAdmin/libraries/classes/Util.php:1620
Stack trace:
#0 D:/xampp/phpMyAdmin/libraries/classes/Util.php(1620): mb_detect_encoding(false, 'UTF-8', true)
#1 D:/xampp/phpMyAdmin/libraries/classes/Plugins/Export/ExportSql.php(725): PhpMyAdmin/Util::localisedDate()
#2 D:/xampp/phpMyAdmin/export.php(444): PhpMyAdmin/Plugins/Export/ExportSql->exportHeader()
#3 {main}
thrown in D:/xampp/phpMyAdmin/libraries/classes/Util.php on line1620
ふぁ?!sqlファイルだと思ったら、エラーログっぽい・・・。これは困った・・。
ここでは phpMyAdmin5.0.1のエクスポートエラー解決方法 を紹介します。
Util.phpを修正する
エラーログの通り、Util.phpの1620行目でプログラムが停止したのであれば、その場所を調べるしかありません。
エラーログにはmb_detect_encoding()
はパラメーター1が文字列であると想定しているとあります。つまり1620行目に問題ありってことですね。
mb_detect_encoding(false, 'UTF-8', true)
原因は$ret
を返してくる1617行目の下記の箇所にある。
$ret = strftime($date, (int) $timestamp);
ここがfalseを返すから問題。調べてみると日本語の時だけ発生する文字化け問題の模様。なので下記のように修正します。
//$ret = strftime($date, (int) $timestamp);
$ret = strftime('%Y-%B-%d %H:%M', (int) $timestamp);
ふむ、これでOKですね。
文字化け発見
不思議なことにUtil.phpの2528行目付近に文字化けを発見した。
なんか影響あると困るのでGitHubのソースの通り改修。
__('Jump to database "%s".'),
Util.phpふむ、これでOKですね。
参考サイト
まとめ
phpMyAdmin5.0.1のエクスポートエラー解決方法を紹介しました。
ちょうど移行作業をしたところで起こった問題だったので結構焦ったなぁー。
次のバージョンでは不具合修正されることを祈ります。
おつかれさまでした。