Я создаю службу REST приложения Zend APIgility и имею проблему с моей функцией fetchAll Mapper.
Я подключаюсь к базе данных IBM DB2, работающей на сервере i Series (AS / 400) через DB2 Connect на сервере приложений Windows.
Мое соединение сделано в моем local.php как таковой:
return array(
'db' => array(
'driver' => 'IbmDb2',
'database' => $database,
'username' => $user,
'password' => $password,
'hostname' => $host,
'port' => $port,
'driver_options' => array(
'i5_naming' => DB2_I5_NAMING_ON,
'i5_lib' => 'LIBWEB',
),
),
);
Функция fetchAll () в моем классе Mapper:
public function fetchAll()
{
$select = new Select('WBRESOURCE');
$paginatorAdapter = new DbSelect($select, $this->adapter);
$collection = new ResourcesCollection($paginatorAdapter);
return $collection;
}
Когда я нажимаю DbSelect, ZF2 выдает следующую ошибку DB2 Connect:
"[IBM][CLI Driver][AS] SQL0204N \"*LIBL.WBRESOURCE\" is an undefined name. SQLSTATE=42704"
Я не уверен, почему он использует * LIBL (пользовательский список библиотек), так как я определил библиотеку (SCHEMA) для использования в качестве LIBWEB в моем варианте подключения.
Заранее спасибо!
обкрадывать
Попробуйте изменить этот раздел:
'driver_options' => array(
'i5_naming' => DB2_I5_NAMING_ON,
'i5_lib' => 'LIBWEB',
Изменить на «:
'driver_options' => array(
'i5_naming' => DB2_I5_NAMING_OFF, <=== change
'i5_lib' => 'LIBWEB',
Используя DB2_I5_NAMING_OFF, вы должны получить режим именования SQL. Использование режима именования DB2 i5 приведет к таким вещам, как зависимость от списка библиотек задания.
Увидеть PHP: db2-connect для некоторой информации о параметре.
Других решений пока нет …