Могу ли я установить альтернативное подключение к базе данных, несмотря на существующее подключение к базе данных Yii-framework
-
21-12-2019 - |
Вопрос
Мы создаем приложение в 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