Codeigniter 2 ручное подключение к базе данных - PullRequest
1 голос
/ 02 апреля 2011

Я только что тестировал обновление до codeigniter 2 и столкнулся с проблемой.Мой сайт использует несколько баз данных, одна из которых является системной базой данных, а одна из нескольких контентных баз данных.Только две базы данных загружаются одновременно, система и любой контент необходимы в соответствии со значением в сеансе.

Из-за использования сеанса я подключаюсь к соответствующей базе данных контента в конструкторе контроллеров черезфункция в MY_Controller.

Каким-то образом, после обновления до codeigniter 2, объект соединения с базой данных контента не попадает в модель, которая будет его использовать.

IE переменная соединенияпубликуется в верхней части контроллеров и модели, а также MY_Controller и MY_Model, но к тому времени, когда он достиг MY_Model, он больше не является объектом.передается моделям в коде 2, а не коде 1.7.3?

1 Ответ

0 голосов
/ 01 июня 2011

Обе базы данных используют одно имя хоста, имя пользователя, пароль?

Если да, то это та же проблема, с которой мы только что столкнулись: 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 по ссылке.

Надеюсь, это поможет.

-Ноа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...