2014-09-04 5 views
4

Я использую odbc_connect() для подключения FIREBIRD базы данных в сценарии, размещенный на Ubuntu 14,04Разрешены памяти размером 134217728 байт исчерпаны (пытались выделить 18063885380364533825 байт)

запрос для извлечения только одна строка

$connect = odbc_connect("EXAMPLE", "GONE", "fishing"); 
$query = "SELECT REMITTONAME, REMITADDRESS, REMITCITY FROM PO WHERE NUM=10072"; 
$result = odbc_exec($connect, $query); 

Ошибка происходит на линии № 3, где я называю odbc_exec ($ подключения, $ запрос)

Allowed memory size of 134217728 bytes exhausted (tried to allocate 18063885380364533825 bytes)

Я удивлен почему функция odbc_exec пытается выделить 15.66 экзабайт?

Ограничение моей памяти в php.ini установлено на 128M, и я попытался увеличить его до 500M.

memory_limit = 500M

Я также попытался поставить ниже в начале моего сценария

ini_set('memory_limit', '-1');

обыскали в Интернете, но ничего не решить мою проблему, и до сих пор пытаются выяснить причину.

Любая помощь будет высоко оценена.

Примечание:

Номера столбцов, выбранных в запросе нулевые или пустые

+1

Вы могли бы взглянуть на этот вопрос: http://stackoverflow.com/questions/21286589/linux-odbc-fatal-error-allowed-memory-size – JoelP

+0

@derp где это решение? –

+1

Убедитесь, что вы используете последнюю версию (2.0.2.153), и в противном случае создайте ошибку в http://tracker.firebirdsql.org/browse/ODBC –

ответ

3

Вы пытаетесь выделить

1.80638854 × 10^13 megabytes 500MB не хватает;) я думаю, что у Вас есть ошибка в вашем Запрос или модуль odbc.

В 64-битной версии odbc сбой, когда одно из полей возврата равно NULL. Таким образом, работа вокруг заключается в замене всех нулевых полей при возврате запроса.

select ifnull(tluser,'') as USER from database.table

Это должно помочь вам с вашей проблемой. Более подробную информацию вы можете получить здесь:

Linux odbc Fatal error: Allowed memory size

+0

ifnull не является функцией базы данных firebird, и я уже подтвердил, что все мои столбцы заполнены, но не являются нулевыми или пустыми. –

+1

@TahirYasin. Эквивалент 'ifnull' для Firebird - [COALESCE'] (http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25- intfunc-coalesce.html). –

+0

@MarkRotteveel, но я могу видеть, что мои запрашиваемые столбцы являются нулевыми или пустыми –

 Смежные вопросы

  • Нет связанных вопросов^_^