ゆろぐ

ゆるく、ろぐる。独学フロントエンドエンジニアの技術ブログ

【WordPress】移転作業しようと思ったらInvalid default value for user_registeredが出た!

WordPressでは移転作業もプラグインひとつで簡単にできるので、特に専門知識を持たない方でもドメインの変更やローカル環境の構築などがお手軽にできます。

私自身、コーディングやフロントエンドがメインなので、サーバー関係のバックエンドやSQLについてはそこまで詳しいわけではありませんが、実務で困ることはほとんどありません。(移転作業はプラグインを使わなくてもできる程度には理解しています)

が、プラグインも万能というわけではなく、移転元と移転先のPHPバージョンの違いや導入しているプラグインによってはうまく移転ができないこともあります。

今回はそんなプラグインが使えない環境で移転作業をした際に直面したエラーの解消方法について、備忘録を残しておきます。

今回エラーが生じた状況

今回このようなエラーに直面したのは、プラグインを使わずに移転作業を行なったことが主な原因です。

移転元のデータベース(phpMyAdmin)に直接アクセスしてエクスポートをし、そのSQLを移転先のデータベースにインポートする際にエラーが生じました。

今回生じたエラーの内容と行なった解決方法

今回発生したエラーは「Invalid default value for user_registered」という内容でした。

結論から言うと、phpMyAdminでインポートするSQLデータの中に「0000-00-00 00:00:00」と言う日付が入っていることでエラーが生じていたので、この部分をエディタを使って「1000-01-01 -00:00:00」に一括変換してあげることで解決しました。

エラーが起きる原因

今回生じたエラー「Invalid default value for user_registered」について調べてみると、どうやらデフォルト値を変更する際に有効範囲外のデータを入力しようとした際に出るようです。

MySQLのDATE値は「1000-01-01 -00:00:00」から 「9999-12-31 23:59:59」の範囲で許可されているので、今回入力しようとしていた「0000-00-00 00:00:00」と言うデータは範囲外のデータなのでうまくインポートができなかったと言うことですね。

詳しい原因についてはわかりませんがバージョンの古いMySQLではこの初期値が使われていたのか、移転元のWordpressを作成した時期が古い場合には起きそうな現象です。

対策方法

対策方法としては僕が対応したように直接「0000-00-00 00:00:00」→「1000-01-01 -00:00:00」に変換する方法と、SQLのモードを変更する方法があります。

SQLで「NO_ZERO_DATE」もしくは「STRICT_TRANS_TABLES」モードのどちらかが有効になっていると、今回の「0000-00-00 00:00:00」と言うデータが許可されないので、両方のモードを無効にすることでインポートができるようになります。

が、僕も含めてSQLへの知見が浅い人はこのモード変更は対応しない方が良さそうですね。(このブログを見ている人は初学者の方が多いと思うでの、手順も載せないでおきます)

まとめ

フロントエンドといえども、開発環境を構築するためには多少バックエンド側の知識も必要になりますし、Wordpressをメインに制作している場合はバックエンドのエンジニアがいないという状況もあると思います。

僕自身Wordpressを専門に制作を行なっているので、今後はもっとバックエンドの領域についての学習が必要だと感じた一件でした。

今後もWordpressをメインにしていくのであれば、フロントエンドのモダンを追うよりも先にバックエンドの基礎知識を身につける方がいいのかもしれません。

【WordPress】移転作業しようと思ったらInvalid default value for user_registeredが出た!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップへ戻る