db2_fetch_object (): ошибка Fetch, генерируемая при работе запроса в strsql

Я получаю следующую ошибку при выполнении запроса в PHP:

Предупреждение: db2_fetch_object (): Fetch Failure in … on line 15

Странно то, что когда я запускаю тот же запрос в своем терминале I5, используя strsql это работает, и я получаю хороший набор записей. Я выполнил запрос SELECT * FROM TABLE(U8.feedconst(0)) AS t1,

U8.feedconst(0) является табличной функцией, которая находится в библиотеке U8, но извлекает данные из библиотеки пользователя. Когда я использую терминал IBM, я устанавливаю библиотеку пользователя с помощью uasetlibl, Библиотека указывается в соединении PHP DB2 в $ this-> user-> library (эта библиотека успешно используется в других запросах).

Вот код PHP:

$this->conn = db2_connect(
\HOST,
$this->user->username,
$this->user->password,
array('i5_libl' => $this->user->library . ' ' . \PROD_LIB,
'i5_naming' => DB2_I5_NAMING_ON)
);
$sql = 'SELECT * FROM TABLE(U8.feedconst(0)) AS t1';
$stmt = db2_prepare($this->conn, $sql);
if ($stmt) {
$this->user->log('stmt = ' . strval($stmt), true);
$exec = db2_execute($stmt);
if ($exec) {
$this->user->log('exec = ' . strval($exec), true);
$this->user->log('db2_stmt_errormsg = ' . db2_stmt_errormsg($stmt), true);
while ($row = db2_fetch_object($stmt)) {
$this->user->log($sql, true);
}
}
}

Журнал показывает, что все выглядит хорошо, пока db2_fetch_object() линия:

2015-11-18 10:43:53pm : stmt = Resource id #21
2015-11-18 10:43:53pm : exec = 1
2015-11-18 10:54:27pm : db2_stmt_errormsg =

Как видите, я пытался получить реальную ошибку от DB2, используя db2_stmt_errormsg(), но ничего не возвращается.

Я смотрел на другие подобные вопросы, как Предупреждение: db2_fetch_assoc (): Fetch Failure а также Ошибка при получении DB2 но они, кажется, не обращаются к моей ситуации.

0

Решение

Я нашел причину моего горя. Кажется, что была дополнительная библиотека, которая использовалась внутренне табличной функцией. Поскольку эта табличная функция имела зависимость в другой библиотеке, и эта другая библиотека не была включена в мой список библиотек, набор записей, возвращаемый PHP, был пустым.

Это работало в терминале i5, потому что мой сеанс терминала уже был настроен на включение этой другой библиотеки в свой список библиотек, без моего ведома.

Когда я добавил другую внутреннюю библиотеку в свой список библиотек в соединении, запрос в PHP работал очень хорошо.

Если кто-то еще сталкивается с этим, убедитесь, что вы включаете все библиотеки, используемые вашим запросом, включая те, которые могут быть внутренними зависимостями.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]