リアルサイトで稼働中のWordPressをローカル環境でいろいろテストや検証をしたくて、local by flywheelでPCのローカル環境にデータベースをインポートしようとしたら、PHPのメモリーサイズが不足してインポートできないエラーで困ってしまいました。
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 117521552 bytes) in /etc/scripts/local-adminer.php on line 92
エラー内容で検索したら、公式サイト(英語)のCommunityページで同じエラーで困っている投稿があり、Adminerを使わずに内包されているSSHを使い、mysqlコマンドで110MBあったデータベースをインポートできました。
このページの目次
クイック手順
まずは、手順を簡単に説明します。そのあとで画像付きで詳しく説明しています。
- サイト名を右クリック⇒Show Folder
- ローカルサイトの app\public フォルダーにインポートしたいxxxxx.sqlファイルを設置(圧縮ファイルの場合は展開しておく)
- サイト名を右クリック⇒Open Site SSH
-
mysql -u root -proot local < xxxxx.sql
とコマンド入力(xxxxx.sqlのファイル名は例です。) - ¥で読み込めないエラーが出る場合は –default-character-set=utf8 オプションを付ける
詳細手順
まずは、インポートしたいsqlファイルをローカルフォルダーのappフォルダーに置いておきます。
ローカルフォルダーの場所は、Windowsの場合、local by flywheel に出ているローカルサイト名を右クリックして「Show Folder」を選ぶとエクスプローラーが開くので、サイト名のフォルダーを開くとapp⇒public フォルダーがあります。
開いたフォルダーにはローカルサイト名のフォルダーがあるので、それを開くとappフォルダー、さらにpublicフォルダーを開きます。ここはいわゆる公開フォルダーなのでWordPressのファイルがたくさん入っています。
そこにリアルサイトからエクスポートしたsqlファイル(例としてxxxxx.sqlとしています。)を、通常のWindowsの操作でコピー&ペーストでもドラッグでもいいので持ってきます。
エクスポートしたファイルが圧縮ファイル(xxxxx.sql.gz などのファイル名)の場合は、事前に展開しておくか、phpMyAdminなどで圧縮なしでエクスポートし直します。
続いて local by flywheel に戻り、出ているローカルサイト名を右クリックして「Open Site SSH」を選びます。すると、Windowsのコマンドプロンプトのような画面が出てきます。
この黒い画面に、こちらのコマンドを入力してEnterキーを押します。xxxxx.sqlファイル名の部分は例えとして入れているだけなので、実際のファイル名に変更してください。
mysql -u root -proot local < xxxxx.sql
上記コマンドで、Unknown command ‘\”.とエラーがでる場合は、文字コードを指定するオプション –default-character-set=utf8 を付けます。
mysql -u root -proot local --default-character-set=utf8 < xxxxx.sql
エラーが出ずに、処理が完了したらインポート成功です。Adminerボタンを押してデータベースがインポートされているか確認できます。
コマンドプロンプトが app\public ではないときは、cdコマンドでpublicフォルダーまで移動してから上記コマンドを実行するか、相対パスでファイルを指定します。
インポート完了
以上で、うちで運用しているWordPressサイトでエクスポートしたsqlファイルの容量が110MBの一番大きいサイトをローカル環境に移すことができました。
ちなみに、ここのdef-4.comサイトはエクスポートファイルが圧縮なしで80MBですが、圧縮したsql.gzファイルだとAdminerでインポートできました。
手順的には圧縮ファイルでインポートして、それでもダメな場合は未圧縮ファイルでこの記事の手順を試すのがよいかなと思います。