Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Пытаюсь посредство 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');) также возвращает нормальный результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2006, 14:51 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
У тебя переменная ODBCINI выставлена? файл .odbc.ini есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2006, 15:18 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Удалось более-менее локализовать проблемму. Файд odbc.ini пуст. Есть файл odbcinst.ini в котором описан драйвер для MySQL. Чтобы сотворить нечто подобное для db2, как я понял мне нужна библиотека libdb2.so. Где можно её раздобыть, не скачивая весь db2 Client? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2006, 15:48 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Именно нужен клиент DB2. Если поищешь по этому формуму найдешь ссылки на fixes там есть и клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2006, 16:38 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
ОК. Разобрался вроде более-менее. Поставил клиент, прописал в 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. Может вы сможете подсказать - где конкретно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2006, 15:23 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
неправильный у тебя .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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2006, 16:32 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
И еще ты в строке пишешь 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;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2006, 16:35 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Не правильный, но работает... вроде... Насчет драйвера, я полагал, что Description = DB2 Driver - это вроде как просто описание, а название заключено в квадратных скобках. В любом случае спасибо за совет, доберусь до отладочного сервера завтра - попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 00:47 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Нет, вот это: $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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 07:41 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Я думаю там все Case sensitive не DB2 DRIVER, а DB2 Driver. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 12:06 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Нет, так тоже не хочет работать. Я тут подумал, а не может быть проблеммы из за того, что я не использую .odbc.ini (точка перед именем файла), а работаю с odbc.ini (без точки) непосредственно? И в odbc.ini нету таких строчек: ZZZZ = DB2 Driver Файл я править не могу, могу только просматривать. И еще такая тонкость - при создании объекта класса PDO, в конструктор нужно передавать "odbc:".$DSN или просто $DSN? Да и если всетаки нужно использовать именно .odbc.ini, то где конкретно он должен лежать на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 12:49 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
echo $ODBCINI в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 13:01 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
var_dump($ODBCINI); возвращает null Что-то видимо не то он должен возвращать?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 13:16 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
Должен возвращать путь к файлу odbc.ini в твоем случае, что-то типа export ODBCINI=/home/db2inst1/odbc.ini ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 13:19 |
|
||
|
db2+PDO+PHP
|
|||
|---|---|---|---|
|
#18+
ок, но ведь он видит /etc/odbc.ini и odbcinst.ini потому что такой коннект $DB = new PDO("odbc:ZZZZ"); проходит на отлично с описанными в ZZZZ секции параметрами соединения. А вот если задавать, как тут вычитал, DSN for non-cataloged connection, то лезет ошибка. Всеж думается мне я допускаю какую-то неточность в описании драйвера или чего-то еще. Возможно вы могли бы выложить свои odbc.ini и odbcinst.ini, а также строчку соединения new PDO(), которая работает у вас, чтобы я мог по аналогии попытаться сформировать свои данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 13:27 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=33905728&tid=1605195]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 421ms |

| 0 / 0 |
