Не удалось установить соединение ODBC с экземпляром DB2 с помощью PHP 5.3.6-13ubuntu3.6 - PullRequest
1 голос
/ 13 марта 2012

Я установил DB2 Express-C V9.7, unixODBC php5-odbc и iSerie-5.4.0-1.6 Драйверы для Linux, но когда я пытаюсь подключиться к серверу DB2, php возвращает мне это сообщение:

[unixODBC][IBM][iSeries Access ODBC Driver]Communication link failure. comm rc=10061  -
CWBCO1049 - The iSeries server application is not started, SQL state 08004 in SQLConnect

Я заметил с tcpdump, что php пытается подключиться через порт 8741 вместо 50000.

netstat -anp подскажите мне порт прослушивания DB2 50000

Это мой файл конфигурации

/ etc / odbcinst.ini:

[DB2]
Description     = ODBC for DB2
Driver          = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup           = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
FileUsage               = 1
Threading               = 2
DontDLClose             = 1
UsageCount              = 1

/ etc / odbc.ini

[local_db2]
Driver = DB2
System = localhost
User = db2inst1
Password = MySecretPassword
Port = 50000
Database = dbname
Option = 1 

И мой PHP-скрипт:

$dsn = "local_db2";
$user = "db2inst1";
$passwd = "MySecretPassword";
$conn = odbc_connect($dsn,$user,$passwd );

echo "votre id de connexion est : $conn";

if ($conn <= 0) { 
 echo "\nErreur\n"; 
} 
  else { echo "\nSuccès\n"; 
}

odbc_close($conn);

Теперь я могу подключиться к серверу DB2.Я изменил порт db2inst1 в / etc / services, но сервер не отвечает мне.

Мое сообщение об ошибке (через некоторое время): [unixODBC] [IBM] [Драйвер ODBC для System i Access] Ошибка связи.comm rc = 8405 - CWBCO1047 - Серверное приложение IBM i отключило соединение, состояние SQL 08S01 в ​​SQLConnect

Вывод:

Первая проблема заключалась в том, что драйверы для iSeries не были подходящими драйверами длямоя конфигурация, поэтому я установил DB2 ODBC CLI драйвер , который включает в себя драйверы для Linux.

Второй проблемой была конфигурация odbc.

Моя рабочая / etc / odbc.Конфигурация ini:

[DBNAME]
Driver=DB2

Моя рабочая конфигурация /etc/odbcinst.ini:

[ODBC]
Trace       = yes
Tracefile       = /tmp/odbc.log

[DB2]
Description     = DB2 Driver
Driver      = /opt/ibm/db2/V9.7/lib32/libdb2.so
FileUsage       = 1
DontDLClose     = 1

Подробнее о подключении odbc можно узнать в /tmp/odbc.log.Я тоже использовал программу isql, которая тестирует соединение odbc.Эта программа была в пакете unixodbc linux.

Спасибо за вашу информацию

Николас.

1 Ответ

3 голосов
/ 13 марта 2012

Вероятно, хост-сервер базы данных не был запущен.Хост-сервер базы данных принимает соединения TCP / IP с базой данных.

Вы можете проверить, активен ли он в данный момент, с помощью команды WRKACTJOB SBSD(QSERVER) JOB(QZDASRVSD).

Команда для его запуска: STRHOSTSVR SERVER(*DATABASE).

Порт по умолчанию - 8471.

...