Yii2: подключение к базе данных Oracle - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно подключить модель Yii2 к базе данных Oracle, но она не работает, несмотря на чтение нескольких ответов по этой теме.

Учетные данные для входа в Oracle, которые я использую для входа в систему вручную, похожи на:

  • хост: hosturl.abc.com
  • порт: 1521
  • SID: sidname
  • пользователь: username
  • пароль: passABC

В процессе ручного входа в систему мне нужно выбрать соответствующую схему, после чего яможно увидеть все таблицы.

Мне не ясно, как включить эти детали в oci-соединение.Вот что я сделал без успеха:

'db2' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'oci:dbname=//hosturl.abc.com:1521/sidname;charset=UFT-8', 
    'username' => 'username',
    'password' => 'passABC'     
],

Я получаю сообщение об ошибке «Таблица не существует: TableName», однако я получаю это сообщение, даже если я предоставляю совершенно случайные данные, например, неправильное имя пользователя, неправильный хост, неверный пароль и т. д.)

Мне не понятно, почему я не могу подключиться.Возможно, база данных Oracle отклоняет все запросы?Нужно ли включать SID в учетные данные подключения?

Любая помощь приветствуется

ОБНОВЛЕНИЕ

Я думаю, что должна быть более общая проблема с моей установкой.Я пытаюсь установить необработанное соединение следующим образом:

$conn = oci_connect("username", "passABC", "//hosturl.abc.com/sidname");
if (!$conn) {
    print "There is a problem";
} else {
    print "Connected to Oracle!";
}

Это возвращает следующую ошибку:

Call to undefined function oci_connect()

Есть предложения?Это похоже на проблему с моей настройкой PHP ??

1 Ответ

0 голосов
/ 17 июня 2019

решено!

1) oci_connect не работает: решено
Для получения более подробной информации см. Этот пост Как мне подключить PHP 7.x к базе данных Oracle в RedHat / CentOS? ,Это исправление было необходимо для подключения Yii2 к Oracle.

2) Учетные данные Yii2 db для базы данных Oracle
/ common / config / main-local:

   'db' = [
     'class' => 'yii\db\Connection',
     'dsn' => 'oci:dbname=//hosturl:1521/SID;charset=UTF8',             
     'username' => 'dbusername',
     'password' => 'dbpassword',
   ]

Я пробовал несколько расширений Yii2 oci8, но ни одно из них не работало для меня.Вместо этого исправление (1) для oci_connect сработало, и никаких дополнительных драйверов Yii2 не требовалось.Я смог использовать стандартный класс 'yii \ db \ Connection'.

3) Схема базы данных
В базе данных Oracle у нас есть несколько схем, и я не был уверен, как запросить конкретныйтаблица в конкретной схеме.В конечном итоге решение было простым: в каждой модели добавьте имя схемы к имени таблицы.Например:

class myTable extends ActiveRecord
{
    public static function tableName()
    {
        return 'schemaName.myTable';
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...