Puis-je établir une connexion de base de données alternative malgré la connexion de base de données existante avec le framework Yii

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

Question

Nous réalisons une application dans le framework yii en travaillant avec la connexion mysql db définie dans le fichier config.php.Pourtant, pour une raison quelconque, nous voulons nous connecter à un autre serveur de base de données MySQL.Puis-je le faire de cette façon (sans utiliser la connexion existante) :

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;
}

En l'essayant, j'obtiens l'erreur :mysqli_connect(): php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known

sur cette ligne $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');

Existe-t-il une solution de contournement, un hack pour obtenir une connexion de courte durée afin de récupérer certaines données d'un serveur externe (pas de localhost) ?

MISE À JOUR

Je viens de tomber sur ça bande de roulement.Pourtant, alors que j'essaye :

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

le yii émet CDbException :

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

Était-ce utile?

La solution

Dans votre fichier de configuration, ajoutez simplement d'autres paramètres de connexion :

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

Et utilisez-le comme Yii::app()->otherDb

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top