Kann ich trotz bestehender Yii-Framework-Datenbankverbindung eine alternative Datenbankverbindung herstellen?
-
21-12-2019 - |
Frage
Wir führen Anwendungen im YII-Framework durch und arbeiten mit der in der Datei config.php definierten MySQL-Datenbankverbindung.Aus irgendeinem Grund möchten wir jedoch eine Verbindung zu einer anderen Server-MySQL-Datenbank herstellen.Kann ich es einfach so machen (ohne bestehende Verbindung zu verwenden):
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;
}
Während ich es versuche, erhalte ich die Fehlermeldung:mysqli_connect(): php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known
auf dieser Linie $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');
Gibt es eine Problemumgehung, einen Hack, um eine kurzfristige Verbindung herzustellen, um einige Daten von einem externen Server (nicht von Localhost) abzurufen?
AKTUALISIEREN
Ich bin gerade darauf gestoßen treten.Doch während ich es versuche:
$connection=new CDbConnection($dsn,$username,$password);
$connection->active=true;
Das yii gibt CDbException aus:
CDbConnection failed to open the DB connection: could not find driver
Lösung
Fügen Sie in Ihrer Konfigurationsdatei einfach weitere Verbindungseinstellungen hinzu:
'db' => array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=test',
....
),
'otherDb' => array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=test2',
....
),
Und verwenden Sie es wie Yii::app()->otherDb