Zend Framework и Oracle
Ну что может быть проще? Для подключения к Oracle, с помощью фабричного метода Zend Framework, создаем объект подключения. Но при попытке вставки в таблицу новой записи, получаем исключение “942 ORA-00942: table or view does not exist”, хотя таблица на самом деле существует! А секрет этого неожиданного исключения, кроется в SQL запросе, выполняемом для вставки строки. В нем имя таблицы окружено двойными кавычками, и Oracle пытается вставить запись не в table_name, а в “table_name”. Решить данную проблему можно, передав в параметры подключения опцию “Zend_Db::AUTO_QUOTE_IDENTIFIERS => false”. Создание нового соединения должно выглядеть следующим образом:
$db = Zend_Db::factory("Oracle", array(
'username' => 'name',
'password' => 'pass',
'dbname' => '192.168.0.1:1521/db',
'options' => array(Zend_Db::AUTO_QUOTE_IDENTIFIERS => false)
));

18 Май 2009 в 3:06 пп
Попробовал ,не получилось.
Как быть если нужно задавать дополнительные параметры, у меня в частности, CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=xxxxxx)
18 Май 2009 в 3:45 пп
Разобрался сам
в dbname нужно передавать более детальную инфорацию о базе -
$db = Zend_Db::factory(”Oracle”, array(
‘username’ => ‘имяпользователя’,
‘password’ => ‘пароль’,
‘dbname’ => ‘(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=хост)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=имясервиса)
)
)’,
‘options’ => array(Zend_Db::AUTO_QUOTE_IDENTIFIERS => false)
));
Правда не знаю что делать если в базе будет несколько схем. Сейчас схема одна и поэтому ее можно не указывать, а что делать когда схем будет несколько пока непонятно.
18 Май 2009 в 5:03 пп
Спасибо, Александр! Полезный пример!