Перейти к контенту

Работа с 2-я БД через драйвер IPS


Рекомендуемые сообщения

Уважаемые, столкнулся со следующей проблемой. В ходе задачи необходимо подключить две базы данных. Программа пишется для IPB, поэтому было решено использовать драйвер IPS.

 

Проблема следующего характера. При создании и подключении второго объекта программа начинает кошмарно сбоить! Выражается это в том, что даже запросы к первой БД (через объект БД №1, подключенный первым) реально отправляются на второй объект БД, подключенный потом. Путём теста выяснил, что у обоих подключений одинаковый Resouse ID. :D Что за?

 

В чём может быть проблема? Тестировал на домашнем и рабочем серверах, проблема одна и та же. Прикладываю файл с примером — работает из корневой директории форума, данные для подключения нужно прописать, конечно, свои.

 

Пытался начисто отключать pconnect_mysql, не помогло. В общем, i need help.

Ссылка на комментарий
Поделиться на других сайтах

Я подозреваю для драйвер ipb рассчитан на работу только с одной базой, кстати очень странно что объекты разные, а ид соединения один и тот же, в любом случае глюки надо искать в драйвере.
Ссылка на комментарий
Поделиться на других сайтах

Разобрался. Дело, в общем-то, не в драйвере. Разработка шла на Денвере, а там по умолчанию один логин-пароль на все базы данных. На мажордомо, где работает мой форум, впрочем, та же ситуация.

 

В общем, mySQL не открывает второго соединения, если mysql_connect передаёт тот же хост/логин/пароль, что были использованы при предыдущем соединении.

 

В итоге $this->connection_id получает тот же идентификатор, а $DB->connect просто сменяет текущую активную базу в хосте. Соответственно запросы идут именно к ней. :D

Ссылка на комментарий
Поделиться на других сайтах

2Dr.Freddy

 

С другой БД можно работать, непосредственно указывая её название в тексте запроса.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
Дополнительный подводный камень: при работе с двумя и более БД через драйвер IPS следует забыть об использовании константы SQL_PREFIX — она определяется в функции $DB->connect() и при подключении новых баз уже меняться не будет. Да даже бы если и менялась, ничего бы это не изменило :D
Ссылка на комментарий
Поделиться на других сайтах

Странно, а почему у меня работало:

$DB->obj['sql_database']     = $INFO['sql_database'];
$DB->obj['sql_user']         = $INFO['sql_user'];
$DB->obj['sql_pass']         = $INFO['sql_pass'];
$DB->obj['sql_host']         = $INFO['sql_host'];
$DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];
$DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_queries.php';
$DB->obj['use_shutdown']     = USE_SHUTDOWN;

 

и

 

$DB2 = new db_driver;    
$DB2->obj['sql_database']     = $INFO['sql_database'];
$DB2->obj['sql_user']         = $INFO['sql_user'];
$DB2->obj['sql_pass']         = $INFO['sql_pass'];
$DB2->obj['sql_host']         = $INFO['sql_host'];
$DB2->obj['sql_tbl_prefix']  = 'probid_';    
$DB2->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_queries.php';
$DB2->obj['use_shutdown']     = USE_SHUTDOWN;

Ссылка на комментарий
Поделиться на других сайтах

GiV, возможно, ты использовал функции драйвера, внутри которых не используется SQL_PREFIX?
Ссылка на комментарий
Поделиться на других сайтах

Может в тему? ну форуме так и не было конкретных ответов ;)

Как можно с локального компьютера подключаться к базе которая в инете?

Форум для тестирования находиться на домашнем компе, а база бы лежала в инете и все даные брались бы от туда, помогите пожалуйста с данной проблемой. :D

 

Не, не в тему.

Задайте вопрос в другом разделе.

Изменено пользователем Fisana
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.