Posso estabelecer uma conexão de banco de dados alternativa, apesar da conexão de banco de dados do Yii-framework existente

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

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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top