powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2+PDO+PHP
15 сообщений из 15, страница 1 из 1
db2+PDO+PHP
    #33905652
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Пытаюсь посредство PDO соединиться с БД db2 следующим образом:

try {
$db = new PDO("odbc:database=XXXX", "testdb", "testdb");
} catch (PDOexception $exp) {
echo 'Exception: ' . $exp->getMessage();
}

$smtp =$db->prepare("SELECT * FROM TEST");
$smtp->execute();

Получаю в ответ вот такую ошибку:
Exception: SQLSTATE[IM002] SQLConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified

В каком направлении искать разрешения данной проблеммы?

Надо отметить что коннект с Оракловой базой через PDO проходит на ура. Коннект с обозначенной базой стандартными средствами php ($conn = db2_connect('XXXX', 'testdb', 'testdb');) также возвращает нормальный результат
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33905728
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя переменная ODBCINI выставлена? файл .odbc.ini есть?
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33905844
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалось более-менее локализовать проблемму. Файд odbc.ini пуст. Есть файл odbcinst.ini в котором описан драйвер для MySQL. Чтобы сотворить нечто подобное для db2, как я понял мне нужна библиотека libdb2.so. Где можно её раздобыть, не скачивая весь db2 Client?
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33906030
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно нужен клиент DB2. Если поищешь по этому формуму найдешь ссылки на fixes там есть и клиент.
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33908318
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Разобрался вроде более-менее. Поставил клиент, прописал в ODBCinst.ini драйвер:
[DB2]
Description = DB2 Driver
Driver = /opt/IBM/db2/V8.1/lib/libdb2.so
FileUsage = 1
DontDLClose = 1

И в ODBC.ini указал необходимые для соединения данные:
[ZZZZ]
Driver = DB2
Description = Test DB2 Connect
Server = xxx.xxx.ru
Port = 50000
Database = ZZZZ
Protocol = TCPIP
UID = testdb
PWD = testdb

Далее соединяюсь след. образом:
$DB = new PDO("odbc:ZZZZ");
Все срабатывает на ура.

Но вот если я теперь пытаюсь передать в конструктор PDO параметры соединения ввиде DSN вида: "driver={DB2};Database=ZZZZ;hostname=xxx.xxx.ru;port=50000;protocol=TCPIP; uid=testdb; pwd=testdb"
... вылезает след. ошибка:
SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified

Т.е. выходит, что мне теперь нужно каждую новую БД прописывать odbc.ini? Должен быть выход, видимо я допускаю где-то ошибку при формировании DSN. Может вы сможете подсказать - где конкретно?
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33908619
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неправильный у тебя .odbc.ini

Должно быть что-то типа

ZZZZ=DB2 Driver

[ZZZZ]
Driver = DB2
Description = Test DB2 Connect
Server = xxx.xxx.ru
Port = 50000
Database = ZZZZ
Protocol = TCPIP
UID = testdb
PWD = testdb
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33908631
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще ты в строке пишешь
DSN = "driver={DB2};Database=ZZZZ;hostname=xxx.xxx.ru;port=50000;protocol=TCPIP;

Где у тебя в твоем файле odbcinst.ini driver c именем DB2?
У тебя имя "DB2 Driver" попробуй

"driver={DB2 Driver};Database=ZZZZ;hostname=xxx.xxx.ru;port=50000;protocol=TCPIP;"
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33909467
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не правильный, но работает... вроде...
Насчет драйвера, я полагал, что Description = DB2 Driver - это вроде как просто описание, а название заключено в квадратных скобках. В любом случае спасибо за совет, доберусь до отладочного сервера завтра - попробую.
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33909585
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, вот это:

$dsn = "driver={DB2 DRIVER};Database=ZZZZ;hostname=xxx.xxx.ru;port=50000;protocol=TCPIP; uid=testdb; pwd=testdb" ;


$db = new PDO($dsn);

... тоже отказывается работать (( Ошибка, ставшая уже привычной:

SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33910135
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю там все Case sensitive не DB2 DRIVER, а DB2 Driver.
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33910292
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, так тоже не хочет работать. Я тут подумал, а не может быть проблеммы из за того, что я не использую .odbc.ini (точка перед именем файла), а работаю с odbc.ini (без точки) непосредственно? И в odbc.ini нету таких строчек:

ZZZZ = DB2 Driver

Файл я править не могу, могу только просматривать.

И еще такая тонкость - при создании объекта класса PDO, в конструктор нужно передавать "odbc:".$DSN или просто $DSN?

Да и если всетаки нужно использовать именно .odbc.ini, то где конкретно он должен лежать на сервере?
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33910326
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
echo $ODBCINI в студию
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33910373
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
var_dump($ODBCINI);

возвращает

null

Что-то видимо не то он должен возвращать?)
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33910382
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должен возвращать путь к файлу odbc.ini в твоем случае, что-то типа

export ODBCINI=/home/db2inst1/odbc.ini
...
Рейтинг: 0 / 0
db2+PDO+PHP
    #33910410
like.no.other
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок, но ведь он видит /etc/odbc.ini и odbcinst.ini

потому что такой коннект $DB = new PDO("odbc:ZZZZ"); проходит на отлично с описанными в ZZZZ секции параметрами соединения. А вот если задавать, как тут вычитал, DSN for non-cataloged connection, то лезет ошибка. Всеж думается мне я допускаю какую-то неточность в описании драйвера или чего-то еще. Возможно вы могли бы выложить свои odbc.ini и odbcinst.ini, а также строчку соединения new PDO(), которая работает у вас, чтобы я мог по аналогии попытаться сформировать свои данные?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2+PDO+PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]