PHP PDO Windows для iSeries IBM DB2

1

Я пытаюсь получить PDO-соединение (php 5.4) в Windows 7 (64-разрядная версия) для подключения к iSeries IBM AS/400. Моя конечная цель - использовать Yii2, который использует PDO.

Для совместимости драйверов PDO я использовал php5.4, поскольку php5.5 не смог загрузить расширение PDO для IBM_DB2. Первоначально у меня был драйвер DB2 odbc IBM, работающий с PDO, используя следующую строку подключения:

 try {
  $dbc = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};
         DATABASE=MYDB;"."HOSTNAME=myhost;", "myuser", "mypassword");
 } catch (PDOException $e) {
     print "Error!: " . $e->getMessage(). "<br/>";
     die();
 }

... но я получал ошибки соединения от хоста. Может быть, это неправильный драйвер для iSeries?

Затем я нашел драйвер ODBC для доступа к iSeries для установки в IBM я Access для Windows и подумал, что это может быть скорее необходимость драйвера. Я должен был выполнить восстановление системы, чтобы получить драйвер ODBC Access iSeries, но восстановление удалило другой драйвер IBM ODBC. Драйвер ODBC Access iSeries теперь отображается правильно.

Однако теперь расширение PDO не удалось загрузить. Он жаловался на отсутствие db2cli.dll. При попытке исправить thsi он также переустановил старое подключение драйвера IBM DB2 ODBC. Примечание. Я все еще получаю сообщение об ошибке.

1) Будет ли драйвер IBM DB2 ODBC работать с iSeries, и у меня просто неверна строка подключения?

2) Указывает ли недостающее сообщение db2cli.dll, что связь PDO действительно связана с драйвером IBM ODBC IBM? Мне интересно, может ли/должен использоваться драйвер ODBC iAccess с расширением PDO.

Любая помощь приветствуется. Спасибо.

Теги:
db2
pdo

1 ответ

2
Лучший ответ

Оба драйвера ODBC необходимы, а строка подключения неверна.

1) Чтобы избавиться от сообщения db2cli.dll, драйверы odbc cli должны были быть загружены из IBM (в дополнение к Client Access 7.1.zip для драйверов ODBC для iSeries), а затем путь должен быть обновлен вручную, чтобы указать на файл db2cli.dll.

2) Строка соединения выглядит следующим образом: (включая фигурные скобки)

$dbc = new PDO("odbc:DRIVER={iSeries Access ODBC DRIVER}; ", 
    "SYSTEM={foobar}; ",  
    "DATABASE={dbname}; ", 
    "UID={foo}; ", 
    "PWD={bar}");
  • 0
    Зачем вам нужен дополнительный драйвер ODBC в дополнение к драйверу IBM i Access?
  • 0
    @WarrenT Расширение pdo не будет загружаться без наличия файла db2cli.dll, который связан с драйвером IBM DB2 ODBC. Если вы не используете PDO, это не нужно.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню