【phpMyAdmin】SQLファイルのインポートでエラーが発生する!?「Incorrect format parameter」の対処法|docker上のコンテナ

Tired exhausted woman working at laptop Database
記事内に広告が含まれていることがあります。
[PR]

WordPressの移管など、他のデータベースのデータをphpMyAdminでエクスポートし、そのファイルをそのままインポートしようとすると「Incorrect format parameter」というエラーが発生することがある。

この原因と対処法について。

原因

エラーの発生原因は、インポートしようとしているsqlファイルのファイルサイズが上限を越えているため。

デフォルトの設定では、2MB(環境にもよる)とかなり小さめな設定になっている。数ページ程度のデータベースであれば問題ないが、ある程度の規模だと2MBは簡単に越えてしまう。

対処法

エラーを出さずにインポートする方法としては、エクスポート時に出力対象のテーブルの数を減らす。あるいは、インポートできるファイルサイズの上限を上げる方法がある。

ここでは後者について説明する。

phpMyAdminには、phpmyadmin-misc.iniというファイルがあり、このファイルにインポートできるファイルサイズの上限などが記述されている。

root@1c8bfe740570:/usr/local/etc/php/conf.d# ls -a | grep misc
phpmyadmin-misc.ini

root@1c8bfe740570:/usr/local/etc/php/conf.d# cat phpmyadmin-misc.ini
allow_url_fopen=Off
max_execution_time=${MAX_EXECUTION_TIME}
max_input_vars=10000
memory_limit=${MEMORY_LIMIT}
post_max_size=${UPLOAD_LIMIT}
upload_max_filesize=${UPLOAD_LIMIT}

この設定を変更することで、ファイルの上限サイズを変更することができる。

Docker上のphpMyAdminの場合

Docker上で起動しているphpMyAdminの場合は、ローカルにカスタムの設定を記述した、phpmyadmin-misc.ini ファイルを作成し、volumeにマウントする必要がある。

phpmyadmin-misc.iniの作成

phpmyadmin-misc.iniの作成例は以下。

allow_url_fopen = Off
max_execution_time = 300
max_input_vars=10000
memory_limit = 64M
post_max_size = 64M
upload_max_filesize = 64M


Volumeにマウントする

docker-compose.ymlファイルのphpMyAdminにvolumesを追記する。

以下のようなファイル構造の場合、docker-compose.ymlの記述例

phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: phpmyadmin
    #restart: always
    depends_on:
      - db
    ports:
      - 10099:80
    volumes: 
      - ./phpmyadmin-misc.ini:/usr/local/etc/php/conf.d/phpmyadmin-misc.ini

volumesの書き方は「ホスト側:コンテナ側」となる。ホスト側はdocker-compose.ymlファイルがあるディレクトリを起点として、相対パスで記述する。

※現在のディレクトリを指定する場合は「./」が必須。

コンテナを再起動すれば設定が反映される。

> docker restart <コンテナ名>

最大ファイルサイズが64MBに変更になった。

XAMPPやMAMPの場合

XAMPPやMAMPなどWEBアプリの環境構築ソフト上にサーバーを展開している場合は、XAMPPやMAMPのpip.iniを変更する。

例えば、XAMPであれば、デフォルトの設定なら、「C:\xampp\php」の中に、php.iniが入っているので、エディタで開いて、該当する箇所を以下のように変更する。

allow_url_fopen = Off
max_execution_time = 300
max_input_vars=10000
memory_limit = 64M
post_max_size = 64M
upload_max_filesize = 64M

各項目の意味

allow_url_fopen=Offとは?

ファイルの開くときにURLのようにして開くかどうか。基本的にはOffで問題ない。

max_execution_timeとは?

処理の実行時間。この設定時間を越えた場合は、処理を強制的に終了する。
初期設定値は30(秒)。0にすると無限になり、最悪の場合無限ループに陥るので注意。

max_input_varsとは?

一度に処理するPOSTの数。デフォルトは10,000。このままで基本問題ない。

memory_limitとは?

処理で使用するメモリの上限値。デフォルトは128MB。上限値を超えるとFatal Error(致命的なエラー)となりプログラムが停止する。
設定の目安は、少なめは16M~32MB、多めは64M~128MB。

post_max_sizeとは?

POST データの上限サイズ。デフォルトは 8MB。

upload_max_filesizeとは?

アップロードできるファイルの上限サイズ。デフォルトは2MB。上限を変更する場合は、post_max_sizeも合わせて変更する必要がある(※post_max_size >= upload_max_filesizeとなること)。

phpmyadmin-misc.iniの補足

phpmyadmin-misc.iniの設定内容は、php.iniで使われる設定内容と同じ。phpMyAdminはPHPを使ったプログラム。その設定ファイル(.ini)になる。

ちなみにmiscとは、miscellaneous(ミサレリアス)の略で、雑多なという意味。このファイルで色々な設定をしてることを暗示している。

設定できる項目は他にもたくさんある。詳細は PHP公式 php.ini ディレクティブのリスト をご参照。


タイトルとURLをコピーしました