Codeigniter - L'Utilisation De Plusieurs Bases De Données
database.php:
$db['default']['hostname'] = "192.168.2.104";
$db['default']['username'] = "webuser";
$db['default']['password'] = "----";
$db['default']['database'] = "vad";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['stats']['hostname'] = "192.168.2.104";
$db['stats']['username'] = "webuser";
$db['stats']['password'] = "---";
$db['stats']['database'] = "vad_stats";
$db['stats']['dbdriver'] = "mysql";
$db['stats']['dbprefix'] = "";
$db['stats']['pconnect'] = TRUE;
$db['stats']['db_debug'] = TRUE;
$db['stats']['cache_on'] = FALSE;
$db['stats']['cachedir'] = "";
$db['stats']['char_set'] = "utf8";
$db['stats']['dbcollat'] = "utf8_general_ci";
Le problème est que je ne peut définir dans la configuration d'un
$active_group
, par défaut, ou les statistiques. J'ai suivi le CodeIgniter la documentation et j'ai ajouté ce qui suit:
$DB2 = $this->load->database('stats', TRUE);
De cette façon-je me connecter à la deuxième base de données, mais je perds la connexion à la première. Quelqu'un a une idée sur comment puis-je charger les deux de la base de données sans avoir à effectuer les opérations suivantes dans tous les modèles des constructeurs?
$database1 = $this->load->database('database1', TRUE);
$database2 = $this->load->database('database2', TRUE);
Ce qui concerne,
Pedro
Vous devez vous connecter pour publier un commentaire.
Au lieu d'appliquer le hack comme mentionné par Camacho vous pouvez aussi définir la pconnect'-drapeau dans le database.php fichier pour de FAUX pour toutes les connexions.
Il y a un bug dans codeigniter. L'insertion d'une ligne dans une classe de corriger tout cela. Voici la source originale: http://koorb.wordpress.com/2007/11/16/codeigniter-connect-to-multiple-databases/
** Ce correctif ne s'applique pas à PostgreSQL
Ici est une copie, juste au cas où que le site tombe en panne.
Le numéro de la ligne a changé. Voici la correction de bug de codeigniter:
début de correction de
Description
l'ensemble de la base de données des appels d'aller à la même base de données (la dernière initialisé)
Pour résoudre le problème de changement de la simple_query fonction /system/database/DB_driver.php:
Entièrement cela résout le problème, de sorte que vous pouvez faire des trucs comme ça dans un modèle
actuellement, codeigniter ne peut pas se connecter à plusieurs bases de données dans persisten connexion.
donc, vous devriez tour de la persisten de vos connexions.
vous pouvez vous pouvez le faire..
- Je résoudre le problème de la modification de la DB_driver.php sur le cadre.
Dans cette fonction que j'ai ajouter
$this->db_select();
et vous ne perdez jamais votre connexion lorsque vous travaillez avec 2 bases de données.Vous pouvez essayer de modifier la fonction CI_Session() dans session.php fichier.
Remplacer
avec cette
De cette façon, vous ne devez pas charger 2 dbs dans tous les fichiers du modèle, mais de les utiliser directement à l'aide d'objets.
$this->db1 serait l'accès par défaut du groupe de db et $this->db2 serait l'accès db2 groupe db. (les deux db groupes ont été définis dans database.php)
Sundar
$this->db->db_select($database2_name);
CodeIgbiter Guide De L'Utilisateur