この記事はWordPress移転などで1064エラーが生じて、データベースが移行できない場合の解決方法を紹介しています。
こんにちは。WordPressを10年以上使っているアメンボです。先日、WordPressを使ったブログのサーバ移転を行いましたが、移転の際1064エラーが生じ、移転に時間がかかったのでその際の備忘録も兼ね記事にします。
1064エラーとは
1064エラーはネットで検索すると、データベース(SQL)の構文エラーのようです。データベースを作成する際に、SQLに沿った文書を打っていくのですが、その際に区切り記号などのエラーがあった場合に発生するようです。
1064エラーの解決
単純にコマンドラインからデータベース操作をしている場合は、構文を再確認して修正すれば大丈夫です。ところが、サーバ移転にともなうエラーの場合、どこにエラーがあるのかを特定するのに非常に時間がかかってしまいます。そこで、この記事では1064エラーが生じた際の、解決案をいくつか提供します。
データベースを移転する際に1064エラーが生じた場合、構文エラーの可能性は低いです。そもそも、もともとのサーバで問題なくデータベースが動いているのに、エクスポート&インポートをしようとすると、エラーが生じるのは構文以外のエラーを疑うべきです。ネットを使って調べると、様々な解決方法が見つかりました。
MySQLのバージョンが違う
移転元のMySQLのバージョンが新しく、移転先のMySQLが古い場合に構文エラーが生じることがあるようです。例えばMySQL 5.7を使っているサーバからMySQL5.5を使用しているサーバへ移転しようとした場合などに生じます。この場合は移転先サーバのMySQLを最新のものにして再度インポートを実行しましょう。
エクスポート設定を変える
phpMyAdminを使ってデータベースをエクスポートする場合、通常はデフォルトの設定(設定を変更しない)でも問題ありません。しかし、1064エラーが生じる場合はエクスポート設定を見直してみると解決する場合があるようです。
エクスポートする際の生成オプションで「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT /TRIGGER コマンドを追加する」にチェックを入れて再度エクスポートしてみましょう。
PHP.iniの設定を変更する
サーバへアップロードできるサイズやタイムアウト時間が短い場合にも1064エラーが生じることがあるようです。特に長年使ってきたサーバを移転する場合、サイズが大きくなり新しいサーバへファイルをアップロードする際にエラーが生じてしまうことがあるようです。
Php.iniの設定を開き、下記項目を変更してみましょう。
- max_executiont_time : ファイルの実行時間。エラーが生じる場合500などに変更
- post_max_size : 最大ファイルサイズ。エラーが生じる場合、データベースのサイズに応じて変更。512MBなど
- upload_max_filesize:同様。最大アップロードサイズ。エラーが生じる場合、サイズを変更
変更の反映には5分ほどかかります。設定変更後、再度データベースのインポートを試してみてください。
データベースを分割する
これらの設定を変更してもエラーが発生する場合、データベースを分割してエクスポート(ダウンロード)してみてください。
テーブルごとにインポートし、それでもエラーが生じる場合、行数を指定しさらに細分化してインポートしてみましょう。WordPressの場合、wp1_posts(環境によって異なる)テーブルがネックとなるケースが多いようです。
posts テーブルをエクスポートする際は、行数を指定し1000行ずつなどに分割するとエラーがなくなります。
私自身、様々な可能性を考えいろいろ挑戦しましたが、最終的に行を指定して500行ずつインポートしたところ、エラーなく無事インポートすることができました。
特にサイズが大きい場合は、エラーが生じることもあり、実際に内容に問題があったとしても、1064エラーではエラー行を特定することができません。結局エラーを特定するためには、行数を細分化してインポートしていくことで特定できます。
万一、WordPressの引っ越しで問題が生じている場合は、上記手順を試してみてください。