1M以上のファイルをMySQLに格納できないエラー


1M以上のファイルをMySQLに格納できないエラーがでた場合のメモ。





ホームページのコンテンツを登録する管理ページをPHPで作成しています。

そこで躓いたのが、ファイルをデータベースに格納する処理。 Windows上にあるExcelファイルやPDFファイルを、PHPで作られた管理ページよりMySQLに格納するという処理を作っていました。 

格納するカラムの種別は”longblob”型。 型が大きいので、大きめのファイルも登録できるだろうと思っていました。 実際に作成してテストをすると、小さいファイルでは格納できるのですが、大きいファイルになるとMySQLエラーが出ました。 

まず、PHPの設定でファイルアップロードに制限を加えるパラメータがあったのを思い出し、チェックしました。

確認したのは、php.iniの以下の部分。

post_max_size = 8MB
memory_limit = 16MB
uproad_max_filesize = 2MB 

今回、格納しようとしたファイルは、1MBちょっとの大きさ。 PHPの設定は問題ないようです。

試しにさらに大きい数値にしてみたのですが、エラーは変わらず。

続いて、MySQLの設定をチェックしました。

というか、MySQLでエラーが出ているのだから、先にこちらを疑うべきだった… 

調べてみると、my.iniにそれらしきパラメータを発見。
 max_allowed_packet = 1M となっているのを、 max_allowed_packet = 5M に変更しました。

設定を変えたので、MySQLを再起動し、再度アップロード… 

今度は成功しました! 結構はまったので、メモしておきます。

コメント

このブログの人気の投稿

SEから経理へ転職できるのか?

社内SEになって後悔しがちな3つのこと