はじめに
ローカルで構築したWordPressのデータベースをリモートサーバのMySQLに移動しようとしたところエラーがでて移動できなかった。解決方法を見出したので報告する。
環境
ローカル
OS: Ubuntu 18.04.1 LTS
PHP: PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02)
MySQL: Server version: 5.7.24-0ubuntu0.18.04.1 (Ubuntu)
リモート
OS: CentOS release 6.4 (Final)
PHP: PHP 5.4.14 (cli) (built: Apr 11 2013 11:04:32)
MySQL: Server version: 5.5.30 MySQL Community Server (GPL) by Remi
トラブル発生の経緯
ローカル環境で、MySQLからデータベースのダンプデータを取得する。
(ローカル)$sudo mysqldump -u root -p (DB名) > /home/tmp_dbdata.dump
tmp_dbdata.dumpをリモートサーバーにアップロードしておく。
あらかじめ、mysqlにログインして、受け入れ用のデータベースを作っておく。
(リモート)# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 890301 Server version: 5.5.30 MySQL Community Server (GPL) by Remi Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database (DB名); Query OK, 1 row affected (0.00 sec) mysql> [1]+ Stopped mysql -u root -p
アップロードしたダンプデータを先ほど作成したデータベースに流し込めば作業終了するはず!!
(リモート)# mysql -u root -p (DB名) < tmp_dbdata.dump Enter password: ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_unicode_520_ci'
いわく、utf8mb4_unicode_520_ciなんでcollationはしらないよ!と。
ネットで調べると、utf8mb4_unicode_520_ciはMYSQL 5.6以上でのサポートらしく、ギリギリアウトということが原因だったよう。
対応策
テキストエディタでtmp_dbdata.dumpを開き次の2つの置換を行う。
utf8mb4_unicode_520_ci → utf8_general_ci utf8mb4 → utf8
.そして修正したダンプデータを流し込む。
(リモート)# mysql -u root -p (DB名) < tmp_dbdata.dump
成功した。