Могу ли я установить альтернативное подключение к базе данных, несмотря на существующее подключение к базе данных Yii-framework

StackOverflow https://stackoverflow.com//questions/23013138

Вопрос

Мы создаем приложение в yii framework, работающее с подключением к базе данных mysql, определенным в config.php файле.Однако по какой-то причине мы хотим подключиться к другому серверу mysql db.Могу ли я сделать это именно таким образом (без использования существующего соединения):

public function init_db() 
{ 
    $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');
    $db_handler->set_charset('utf8');

    // check connection 
    if (mysqli_connect_errno()) {
        throw new Exception ("Error connecting to DB : " . mysqli_connect_error()  );
    }              

    // set autocommit to off 
    mysqli_autocommit($db_handler, FALSE);

    mysqli_query ($db_handler, "set time_zone='Europe/Minsk'");

    return $db_handler;
}

Когда я пытаюсь это сделать, я получаю сообщение об ошибке:mysqli_connect(): php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known

на этой линии $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');

Есть ли какой-нибудь обходной путь, взлом, чтобы получить кратковременное соединение для получения некоторых данных с внешнего сервера (не localhost)?

ОБНОВЛЕНИЕ

Я только что столкнулся с этим топтать.И все же, когда я пытаюсь:

$connection=new CDbConnection($dsn,$username,$password);
$connection->active=true;

yii выдает исключение CDbException:

CDbConnection failed to open the DB connection: could not find driver

Это было полезно?

Решение

В вашем конфигурационном файле просто добавьте другие настройки подключения:

    'db' => array(
        'connectionString' => 'mysql:host=127.0.0.1;dbname=test',
        ....
    ),
    'otherDb' => array(
        'connectionString' => 'mysql:host=127.0.0.1;dbname=test2',
        ....
    ),

И используйте его как Yii::app()->otherDb

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top