Я получаю следующее сообщение об ошибке при выполнении запроса в PHP:db2_fetch_object(): Fetch Failure брошенного когда запрос работает в strsql
Предупреждение: db2_fetch_object(): Fetch Failure в ... на линии 15
Странно, что когда я запускаю тот же запрос в своем I5-терминале, используя strsql
, он работает, и я получаю хороший набор записей. Запрос, который я выполнил, - SELECT * FROM TABLE(U8.feedconst(0)) AS t1
.
U8.feedconst(0)
- это функция таблицы, которая находится в библиотеке U8, но извлекает данные из библиотеки пользователя. Когда я использую терминал IBM, я устанавливаю библиотеку пользователя с uasetlibl
. Библиотека указана в соединении PHP DB2 в библиотеке $ this-> user-> (эта библиотека успешно используется в других запросах).
Вот 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()
, но ничего не возвращает.
Я смотрел другие подобные вопросы, такие как Warning: db2_fetch_assoc(): Fetch Failure и DB2 fetch failure error, но они, похоже, не затрагивают мою ситуацию.