Posso estabelecer uma conexão de banco de dados alternativa, apesar da conexão de banco de dados do Yii-framework existente
-
21-12-2019 - |
Pergunta
Fazemos aplicação no framework yii trabalhando com conexão mysql db definida no arquivo config.php.No entanto, por algum motivo, queremos nos conectar a outro servidor mysql db.Posso fazer assim (sem usar a conexão existente):
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;
}
Ao tentar, recebo o erro:mysqli_connect(): php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known
nesta linha $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');
Existe alguma solução alternativa, hack para obter conexão de curto prazo para buscar alguns dados do servidor externo (não localhost)?
ATUALIZAR
Acabei de me deparar com isso piso.No entanto, enquanto tento:
$connection=new CDbConnection($dsn,$username,$password);
$connection->active=true;
o yii emite CDbException:
CDbConnection failed to open the DB connection: could not find driver
Solução
No seu arquivo de configuração basta adicionar outras configurações de conexão:
'db' => array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=test',
....
),
'otherDb' => array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=test2',
....
),
E use-o como Yii::app()->otherDb