Yii => Oracle DB

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Yii => Oracle DB

Сообщение Besedin »

Привет всем!

Осваиваю Yii Framework потихоньку. Решил подключить его к БД Oracle.
Делал как тут:
http://yiiframework.ru/doc/guide/ru/database.dao

в конфиге получилось вот так:

Код: Выделить всё

'db'=>array(
            'connectionString'=>'oci:dbname=192.168.1.100:1521/ORACLESID;charset=utf-8',
            'username'=>'USERNAME',
            'password'=>'password',
        ),
 
По таким параметрам подключаюсь без проблем на других сайтах.
В результате в gii при входе в Model Generator ошибка:
CDbConnection failed to open the DB connection: SQLSTATE[HY000]: OCINlsCharSetNameToId: unknown character set name (ext\pdo_oci\oci_driver.c:606)
phpinfo() говорит что драйвер php_pdo_oci подключен
PDO drivers - mysql, oci, odbc, pgsql, sqlite, sqlite2
PDO Driver for OCI 8 and later - enabled
Вебсервер - локальный: Open Server (Apache 2.2.22 | PHP 5.3.13 )
Логи PHP без ошибок
БД - удалённая. Порт 1521 открыт.
Версия Yii 1.1.11

Что делаю не так?
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

Чудом как то завёл PDO, но при входе в генератор модели всё виснет и по таймауту возвращает ошибку.

В базе 97 таблиц.

Изображение
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Yii => Oracle DB

Сообщение lancecoder »

подскажи плиз, а что это за веблогер?
или дебагер наверно?
Последний раз редактировалось lancecoder 2012.07.30, 17:09, всего редактировалось 1 раз.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Yii => Oracle DB

Сообщение lancecoder »

как видно по логу он список всех таблиц получает, потом начинает по одной получать и видимо на большой и виснет

upd: http://php.net/manual/ru/function.set-time-limit.php в значение 0, но практика такая не хорошая, я такое только на граберах юзал, ибо там ответ от сервера и много позиций конечно в дефолтные 30 секунд не уложиться
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

lancecoder писал(а):подскажи плиз, а что это за веблогер?
или дебагер наверно?
даже и не скажу)
Вебсервер локальный (http://open-server.ru/). Вроде ничего лишнего.
lancecoder писал(а):как видно по логу он список всех таблиц получает, потом начинает по одной получать и видимо на большой и виснет
upd: http://php.net/manual/ru/function.set-time-limit.php в значение 0, но практика такая не хорошая, я такое только на граберах юзал, ибо там ответ от сервера и много позиций конечно в дефолтные 30 секунд не уложиться
Как я понял висняк начинается при виборке метаданных таблиц. Неужели нужно столько времени для выдачи результата..? Сервер БД не слабый.
А если я задам префикс таблицы, будут ли выбираться все таблицы или только те что с префиксами?
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Yii => Oracle DB

Сообщение lancecoder »

как вариант попробуй

'charset' => 'utf8',
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

lancecoder писал(а):как вариант попробуй

'charset' => 'utf8',
Как раз таки коннект и пошел когда я убрал 'charset' => 'utf8'

Кстате, а разве он не пишется вот тут?

Код: Выделить всё

'connectionString'=>'oci:dbname=server:1521/sid; charset=utf8' 
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

Оу, при анлимитед таймауте в PHP за 8 минут мне всё-таки вывело список таблиц в генераторе модели :)
Указание кодировки и так и сяк не повлияло на время вывода.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii => Oracle DB

Сообщение samdark »

8 минут?! Насколько хорошо владеете schema в Oracle? Возможно придётся поправить COciSchema и отдать нам в ядро.
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

Знания по Oracle не глубоки. Скажем так - приходиться иметь с ним дело )
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Yii => Oracle DB

Сообщение YaZabylStariyNick »

charset=utf8 не верно.
В оракле AL32UTF8 кодировка называется

А у Yii с ораклом все нормльно, если юзать кеш. Без - он каждый раз дергает список таблиц и это жесть, да. На вики есть целых 2 статьи об этом.

На текущем проекте большом юзаю оракл и Yii

Код: Выделить всё

db' => array(
            'class' => 'CDbConnection',
            'connectionString' => 'oci:dbname=//lalalalalala:1521/orcl;charset=CL8MSWIN1251',
            'username' => 'admin12345',
            'password' => '12345',
            'schemaCachingDuration' => '36000',
            'enableParamLogging' => true,
            'enableProfiling' => true,
            'attributes' => array(PDO::ATTR_CASE => PDO::CASE_UPPER),
        ),
        'cache' => array(
            'class' => 'CMemCache',
            //'class'=>'CDummyCache',
            'servers' => array(
                array(

                    'host' => 'localhost',
                    'port' => 11211,
                ),
            ),
        ),
0 проблем.
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Yii => Oracle DB

Сообщение YaZabylStariyNick »

Sam Dark писал(а):8 минут?! Насколько хорошо владеете schema в Oracle? Возможно придётся поправить COciSchema и отдать нам в ядро.
Там сложно сделать решение быстрее что бы независимо от таблицы. Это беда оракла - он медленно такие данные ворочает.

http://www.yiiframework.com/wiki/118/in ... th-oracle/

Собственно вот как одно из решений. Но все же кеш проще :)
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

YaZabylStariyNick писал(а):charset=utf8 не верно.
На текущем проекте большом юзаю оракл и Yii

Код: Выделить всё

db' => array(
            'class' => 'CDbConnection',
            'connectionString' => 'oci:dbname=//lalalalalala:1521/orcl;charset=CL8MSWIN1251',
            'username' => 'admin12345',
            'password' => '12345',
            'schemaCachingDuration' => '36000',
            'enableParamLogging' => true,
            'enableProfiling' => true,
            'attributes' => array(PDO::ATTR_CASE => PDO::CASE_UPPER),
        ),
        'cache' => array(
            'class' => 'CMemCache',
            //'class'=>'CDummyCache',
            'servers' => array(
                array(

                    'host' => 'localhost',
                    'port' => 11211,
                ),
            ),
        ),
0 проблем.
Спасибо, помогло! Экономия времени больше в 2-3 раза )
p0rsche
Сообщения: 192
Зарегистрирован: 2012.01.18, 08:28
Контактная информация:

Re: Yii => Oracle DB

Сообщение p0rsche »

lancecoder писал(а):подскажи плиз, а что это за веблогер?
или дебагер наверно?
xdebug же.
Входит в поставку опенсервера.
clondayk
Сообщения: 16
Зарегистрирован: 2011.08.31, 21:21

Re: Yii => Oracle DB

Сообщение clondayk »

Тоже на работе основная СУБД - Oracle
MySQL слабоват для наших задач.
У меня сейчас задача переделать дельфовый интерфейс на ВЭБ.
А с подключением Oracle не очень получается.

Если можно, покажите пример подключения, который заработал. И как долго отрабатывает запрос скажем на 500-600 тыс записей?
Аватара пользователя
Besedin
Сообщения: 88
Зарегистрирован: 2012.07.30, 11:09
Откуда: Kyiv

Re: Yii => Oracle DB

Сообщение Besedin »

что именно не получается?
shakshin
Сообщения: 2
Зарегистрирован: 2012.10.11, 08:02

Re: Yii => Oracle DB

Сообщение shakshin »

господа, подскажите, начал новый проект на фреймворке. БД - оракл 9.
строка подключения: 'oci:dbname=10.0.0.241/orcl;charset=AL32UTF8;'
все подключается. сгенерировал с помощью gii модели и crud лдя пары таблиц. сгенерировалось отлично, работает, но проблема с кодировкой. после коммита в базу русские символы становятся вопросами.
на этом же сервере крутится другой проект на php без фреймворка, работающий с этой же базой - все отлично с кодировкой. в какую сторону копать?

UPD: пробовал уже различные варианты параметра charset в строке подключения, не помогает
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Yii => Oracle DB

Сообщение lancecoder »

. после коммита в базу русские символы

интересно, я пол жизни сломал без миграций лить в базу никак
shakshin
Сообщения: 2
Зарегистрирован: 2012.10.11, 08:02

Re: Yii => Oracle DB

Сообщение shakshin »

Решил проблему обходным путем с помощью вот этого модуля: https://github.com/yjeroen/oci8Pdo
По сути это класс-потомок CDbConnection, который эмулирует работу с PDO, а сам идет в обход :)
Что примечательно, даже строку подключения не пришлось менять - сразу все проблемы исчезли.
Ответить