В процессе написания модуля возникла необходимость получать данные из базы, которая хранится на другом хосте. Нашел и прочитал http://drupal.ru/node/19457
Описал в settings.php подключение к нужной бд. Описал в модуле вызов db_set_active() к нужной базе, а после - возврат к дефолтной. Все это завязал на клик по пункту меню в админке.
И тут появился трабл:при клике на соответствующий пункт меню - вместо того, чтобы нормально отработать подключение к чужой базе и вернутся к дефолтной, сайт переводится в состояние Site off-line. В чем может быть трабл?
Комментарии
может $db_url заменили на новую базу в settings.php? так низя
Нет, в settings.php все нормально:
Новую базу добавил примерно таким образом:
$db_url['default'] = 'mysql://root@localhost/mainbase';
$db_url['optional'] = 'mysql://login:password@hostname/basename';
Соответственно в обработчике вызываю:
db_set_active('optional');
а после:
db_set_active('default');
В добавок: если после этого перейти на главную, или на какую либо другую страницу сайта - все работает нормально.
если между двумя db_set_active ничего не писать - тоже ошибка? (т.е. первый db_set_active и сразу второй db_set_active)
Убрал запрос и его обработку. Аналогично ошибка.
На официальном сайте советовали возвращать исходное соединение не командой db_set_active('default');, а командой db_set_active('');
Попробуйте.
такая же задача и аналогичная трабла))
ёлки, ну вставьте print-ы до, после и между db_set_active, чтобы понять в каком именно вызове ошибка происходит, потом в сами db_set_active вставляйте print-ы, чтобы понять в каком месте ошибка
у меня подключением трабла
The mysqli error was: Can't connect to MySQL server on <сайт>
Кажись нашел причину трабла.
Судя по всему, для пользователя удаленного мускуля, куда я создаю коннект, нет пермишена удаленный коннкет. Переключка между базами на "локальном хосте" при этом будет работать, а на удаленный нет. Поэтому наверное и сбрасывает в режим оффлайн - на удаленный хост подключение вызывает ошибку, и переподключение на дефолтную базу уже не происходит.
Буду уточнять у моего хостера вопрос по пермишенам мускуль-пользователя. По результатам отпишусь.
Возможное решение трабла нашел, когда вкурил форум: http://www.php.su/forum/topic.php?forum=28&topic=175
Как я и писал в предыдущем посте, трабл был в правах пользователя на коннект к удаленной базе.
Выходов было два: или менять права доступа пользователя, или хостить сайт вместе с тем сайтом, куда я удаленно пробовал коннектится. По желанию заказчика был выбран второй вариант. Как говорится, если гора не идет к Магомету...
В результате все работает как надо. Базы переключаются, запросы работают.
Всем отписавшимся - спасибо за помощь.