こんにちは、ゆんつです。
PCの買い替えなどでローカル環境にあるMySQLのデータベースを別のPCに移行したいことがあります。
このような場合、「phpMyAdmin」を使って手軽に移行元のPCからデータベースをエクスポートし、移行先のPCにインポートすることができます。
今日はphpMyAdminを使ったデータベースの移行作業について書きたいと思います。
移行元のPCでの作業
移行元PCのphpMyAdminにログインします。
データベースの一覧から移行したいデータベースを選択し、エクスポートをクリックします。
エクスポート画面になるので「実行」ボタンをクリック。
ファイルの保存ダイアログが現れるので、適当な場所にSQLファイルを保存します。
あとはUSBメモリやGoogleドライブを使って、SQLファイルを移行先PCに保存しておきます。
移行先PCでの作業
移行先PCのphpMyadminにログインし、「新規作成」で移行前と同じ名前のデータベースを作っておきます。
そして作成したデータベースを選択して「インポート」をクリック。
インポート画面になるので、「参照」ボタンをクリックして移行前PCでダウンロードしたSQLファイルを選択する。
SQLファイルを選択したら、インポート画面の下までスクロールして「実行ボタン」をクリック。
これでデータベースの移行は完了です。
「iccorect format error」が出たら
インポートの実行ボタンをクリックしたら「iccorect format error」が出た場合。
この場合インポートしようとしているファイルのサイズが、php.iniで設定されているアップロード可能なファイルサイズを超過している可能性があります。
インポート画面を確認してみると「最長2048kib」となっています。
そこに8Mバイト以上のSQLファイルをアップロードしようとしたので、エラーが出てしまったのです。
このような場合、phpフォルダ内にあるphp.iniをテキストファイルなどで開いて、アップロードできるファイルサイズの上限について変更する必要があります。
xammpの場合はphpフォルダの中にphp.inというファイルがあるので、それをメモ帳などで開いて以下の項目を確認します。
- memory_limit→PHPが使用するメモリの上限でデフォルトでは128MB
- post_max_size→1度にアップロードできるファイルサイズの合計の上限でデフォルトは8MB
- upload_max_filesize→アップロードできる1つのファイルサイズの上限でデフォルトは2MB
つまりupload_max_filesizeはデフォルトでは2MBなのに、そこに8MB以上のSQLファイルをインポートしようとしたのでエラーが出たのです。
またpost_max_sizeも超過しています。
そこでupload_max_filesizeとpost_max_sizeの値を変更してアップロードできるファイルサイズの上限を変更するのですが、ここで1つ注意しなければならないことがあります。
それは
memory_limit >= post_max_size >= upload_max_filesize
という関係になっていないといけないということです。
post_max_sizeが8Mなのにupload_max_filesizeを10Mにしても意味がありません。
ですのでupload_max_filesizeがpost_max_sizeやmemory_limitを超えてしまう場合は、それらもupload_max_filesize以上になるように変更する必要があります。
というわけで、今回はpost_max_sizeとupload_max_filesizeを10Mに変更しました。
変更したらいったんApacheを再起動して、再度phpMyadminにログイン。
そしてインポートを選択してみるとアップロードできるファイルの上限が10Mになっています。
改めてインポートを実行すると無事にインポート完了。
データの移行もきちんとできています。
以上がphpMyadminを使ったデータベースの移行作業です。
phpMyadminを使うと楽に移行できます
データベースの移行はめったにやらないので、自分への備忘も兼ねて記事にしてみました。
phpMyadminを使わなくてもコマンドラインを使って移行することも可能ですが、個人的にはphpMyadminを使うほうが手軽だと思います。
何かの参考になれば幸いです。