Cent OS 上のPHPからodbcドライバでWindows Server上のSQL Serverへ接続していて、
Allowed memory size of 1073741824 bytes exhausted (tried to allocate 4294967293 bytes) Filename: …
といったエラーが出た。
php.iniのmemory_limitの設定を増やしても変わらず。
とういか、そもそもそんな大量のデータを取得していないのに出る。
いろいろ試行錯誤してみた結果、どうやら、nvarchar型の値が一定サイズ以上入っているカラムからデータをSELECTしようとすると、 出るっぽい。
暫定解決策
- php.iniで、以下を設定
odbc.defaultlrl=65536
(http://php.net/manual/ja/function.odbc-result.php)
- nvarcharのサイズをOKになるまで変えてみる。例えば、nvarchar(32)からnvarchar(64)にするとか。最悪、nvarchar(max)にする。
コメント