-1

アプリケーションを複数のデータベースに同時に接続したい。これは私の現在のDB構成です:

'database_config' => array(
'db1' =>array( 
    'host_name' => 'localhost',
    'username'  => 'root',
    'password'  => '',
    'dbname'    => 'database1',
    'dbprefix'  => '',
    'dbtype'    => 'mysql'

)
,'db2' => array(
    'host_name' => 'localhost',
    'username'  => 'root',
    'password'  => '',
    'dbname'    => 'test',
    'dbprefix'  => '',
    'dbtype'    => 'mysql'

)  
);

今、私はこのファイルを含めています。複数のデータベース接続が構成ファイルの配列として指定されている場合、データベースに接続したいのですが、それ以外の場合は、db 構成ファイルで指定された最初のデータベースに接続します。

私は独自のコーディング構造を書きました。codeigniter、cakephp、または yii フレームワーク スタイルと同じように、一度に複数のデータベースに接続し、構成ファイルで指定された同じ名前のデータベースにアクセスしたいと考えています。

複数の構成の場合はループを試みましたが、データベースにアクセスしたい場合は接続後にエラーが表示されます。おっとスタイルでこれに対するより良い解決策がある場合は、解決策を教えてください。役に立ちます。

感謝と敬意を込めて、 サンジェイ・デイ

4

1 に答える 1

2

codeigniter での私の経験では、この構成を使用して DB を定義し、必要なそれぞれに接続します

$active_group = "forum";
$active_record = TRUE;

$db['forum']['hostname'] = "xxxxx";
$db['forum']['username'] = "xxxxx";
$db['forum']['password'] = "xxxxx";
$db['forum']['database'] = "xxxxx";
$db['forum']['dbdriver'] = "mysql";
$db['forum']['dbprefix'] = "";
$db['forum']['pconnect'] = TRUE;
$db['forum']['db_debug'] = TRUE;
$db['forum']['cache_on'] = FALSE;
$db['forum']['cachedir'] = "";
$db['forum']['char_set'] = "utf8";
$db['forum']['dbcollat'] = "utf8_general_ci";

/* TEST SITE */
$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "xxxxx";
$db['default']['username'] = "xxxxx";
$db['default']['password'] = "xxxxx";
$db['default']['database'] = "xxxxx";
$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";  

アクティブなデータベースは、最後に定義したデータベースになります。

そして必要なときに

$this->db_forum = $this->CI->load->database('forum', TRUE);

$this->db で dbase 1 にアクセスし、$this->db_forum (または任意の名前) で dbase 2 にアクセスします。

于 2012-08-19T06:41:20.893 に答える