Dr.Freddy Опубликовано 24 Августа 2005 Жалоба Поделиться Опубликовано 24 Августа 2005 Уважаемые, столкнулся со следующей проблемой. В ходе задачи необходимо подключить две базы данных. Программа пишется для IPB, поэтому было решено использовать драйвер IPS. Проблема следующего характера. При создании и подключении второго объекта программа начинает кошмарно сбоить! Выражается это в том, что даже запросы к первой БД (через объект БД №1, подключенный первым) реально отправляются на второй объект БД, подключенный потом. Путём теста выяснил, что у обоих подключений одинаковый Resouse ID. Что за? В чём может быть проблема? Тестировал на домашнем и рабочем серверах, проблема одна и та же. Прикладываю файл с примером — работает из корневой директории форума, данные для подключения нужно прописать, конечно, свои. Пытался начисто отключать pconnect_mysql, не помогло. В общем, i need help. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Valera Опубликовано 24 Августа 2005 Жалоба Поделиться Опубликовано 24 Августа 2005 Я подозреваю для драйвер ipb рассчитан на работу только с одной базой, кстати очень странно что объекты разные, а ид соединения один и тот же, в любом случае глюки надо искать в драйвере. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 26 Августа 2005 Автор Жалоба Поделиться Опубликовано 26 Августа 2005 Разобрался. Дело, в общем-то, не в драйвере. Разработка шла на Денвере, а там по умолчанию один логин-пароль на все базы данных. На мажордомо, где работает мой форум, впрочем, та же ситуация. В общем, mySQL не открывает второго соединения, если mysql_connect передаёт тот же хост/логин/пароль, что были использованы при предыдущем соединении. В итоге $this->connection_id получает тот же идентификатор, а $DB->connect просто сменяет текущую активную базу в хосте. Соответственно запросы идут именно к ней. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 29 Августа 2005 Жалоба Поделиться Опубликовано 29 Августа 2005 2Dr.Freddy С другой БД можно работать, непосредственно указывая её название в тексте запроса. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 6 Сентября 2005 Автор Жалоба Поделиться Опубликовано 6 Сентября 2005 Дополнительный подводный камень: при работе с двумя и более БД через драйвер IPS следует забыть об использовании константы SQL_PREFIX — она определяется в функции $DB->connect() и при подключении новых баз уже меняться не будет. Да даже бы если и менялась, ничего бы это не изменило Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 7 Сентября 2005 Жалоба Поделиться Опубликовано 7 Сентября 2005 Странно, а почему у меня работало:$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; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 7 Сентября 2005 Автор Жалоба Поделиться Опубликовано 7 Сентября 2005 GiV, возможно, ты использовал функции драйвера, внутри которых не используется SQL_PREFIX? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
VicS Опубликовано 7 Сентября 2005 Жалоба Поделиться Опубликовано 7 Сентября 2005 (изменено) Может в тему? ну форуме так и не было конкретных ответов Как можно с локального компьютера подключаться к базе которая в инете?Форум для тестирования находиться на домашнем компе, а база бы лежала в инете и все даные брались бы от туда, помогите пожалуйста с данной проблемой. Не, не в тему.Задайте вопрос в другом разделе. Изменено 9 Сентября 2005 пользователем Fisana Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.