1

codeigniter 2 へのアップグレードをテストしていたところ、問題が発生しました。私のサイトでは複数のデータベースを使用しています。1 つは「システム」データベースで、もう 1 つはいくつかの「コンテンツ」データベースです。セッションの値に応じて、システムと必要なコンテンツの 2 つのデータベースのみが一度にロードされます。

セッションを使用するため、MY_Controller の関数を介して、コントローラーのコンストラクターで関連するコンテンツ データベースに接続します。

どういうわけか、codeigniter 2 にアップグレードしてから、コンテンツ データベースへの接続オブジェクトが、それを使用するモデルになりません。

つまり、接続の変数は、コントローラーとモデル、および MY_Controller と MY_Model の上部で公開されますが、MY_Model に到達するまでには、オブジェクトではなくなります。

変数の値が codeigniter 2 ではモデルに渡されるが、codeigniter 1.7.3 では渡されないので、変数の値をリセットするアイデアはありますか?

4

1 に答える 1

0

両方のデータベースが同じホスト名、ユーザー名、パスワードを使用していますか?

はいの場合、これは私たちが遭遇したのと同じ問題です: http://codeigniter.com/forums/viewthread/72240/P15/

異なるユーザー名を持つ mysql ユーザーを作成することで解決しました。userA は dbA にアクセスでき、userB は dbB にアクセスできます。

起こっているのは、次の場合です。

  1. $this->dbA = $this->load->database('dbA_config', true);
  2. $this->dbB = $this->load->database('dbB_config', true);

行#2を実行すると、phpはこの接続がすでに開いているかどうかを確認します。問題は、phpがホスト名、ユーザー名、パスワードのみを調べているため、データベースを変更しようとすると、PHPが実際に参照によってdbAを更新していることです。

それが役立つことを願っています。

-ノア

于 2011-06-01T18:56:50.083 に答える