odbcドライバでmemory exhaoustのエラーが出る

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)にする。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

メインはWeb系エンジニアです。

コメント

コメントする

目次