[unixODBC-support] PHP Fatal error: Out of memory (allocated 262144) (tried to allocate 17047099150164910081 bytes)

Nick Gorham nick at lurcher.org
Thu Feb 12 12:51:29 GMT 2015


On 12/02/15 12:45, Michael König wrote:
> Hi!
>
> My best guess (judging from the ridiculously high number tried to 
> allocate) is that you are using an ODBC driver which is not compatible 
> with your version of unixODBC. unixODBC 2.2.14 onwards uses 64 bit 
> values for variables of type SQLLEN (on 64 bit systems, I think), 
> while earlier versions had the same SQLLEN type defined as a 32 bit 
> integer. If you use a a driver built for unixODBC 2.2.12 with unixODBC 
> 2.2.14, there is a good chance that the bits 33 to 64 are not properly 
> set to 0, yielding ridiculously high values.
>
> Long story short: Check which version of unixODBC you are using and 
> for which version of unixODBC the driver used to access your data 
> source was built. Use the "isql" command line tool in verbose (-v) 
> mode with the same data source as another application. When isql shows 
> similar errors, your PHP application is probably not the issue.
>
> Hope this helps.
>
> Cheers
>
> Michael

Yep, but in this case maybe not "try also on Debian 7 32bit emulated by 
VirtualBox". I think its more likely the driver is legitimately 
returning a length for a TEXT type that may be huge, and PHP is 
allocating a buffer for it, not noticing its a SQL_LONGVARCHAR type.

I would check you have the most up to date version of PHP (will also fix 
problem you may also be having that Michael mentioned).

Also, not sure what driver you are using, so I can only guess what 
length its returning for the field.

-- 
Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.unixodbc.org/pipermail/unixodbc-support/attachments/20150212/3921d572/attachment.html>


More information about the unixODBC-support mailing list