pdo — PHP PDO_Informix Ошибка локали -23101

SQLSTATE = HY000, SQLDriverConnect: -23101 [Informix] [Informix ODBC Driver] [Informix] Неуказанная системная ошибка = -23101

ОС: Ubuntu 16.04 64Bits

  • Установите Informix CSDK (версия 4.10)
  • Скомпилируйте PDO_INFORMIX (версия 1.3.3)

  • Включить расширение pdo_informix.so в конфигурации apache

  • Установить переменные окружения Apache

    1 — INFORMIXDIR = / opt / informix (где я установил CSDK)

    2 — DB_LOCALE = en_US.819

    3 — CLIENT_LOCALE = en_US.utf8

Строка подключения: $instance = new PDO("informix:host=$host;service=$port;database=$db;server=ol_standard;protocol=onsoctcp;client_locale=en_US.utf8;db_locale=en_US.819;EnableScrollableCursors=1;OPTIMIZEAUTOCOMMIT=1", $usr, $pwd);

Ошибка 23101 касается DB_LOCALE и CLIENT_LOCALE, но она все установлена.

0

Решение

Глядя на текст в сообщении об ошибке, я думаю, что у вас больше, чем просто проблема локали (23101).

Если вы получаете:Неуказанная системная ошибка«

скорее что:Невозможно загрузить категории локали»

это означает, что драйвер не смог найти правильное текстовое сообщение для ошибки -23101, что обычно происходит, когда INFORMIXDIR установлен неправильно.

Файлы .iem (в $ INFORMIXDIR / msg / en_us / 0333) содержат текстовое сообщение для каждого номера ошибки. Если сообщение не может быть найдено, вы получаете общую «Неуказанную системную ошибку».

Вы упомянули Apache, поэтому я думаю, что вы пытаетесь запустить код PHP из apache, а не только из командной строки. Apache, возможно, не передает переменную env модулю PHP.
Если модуль apache env (mod_env.so) включен, вы можете попробовать поместить что-то подобное в ваш файл httpd.conf.

 setenv INFORMIXDIR '/opt/informix'

поэтому переменная INFORMIDIR будет передана в модуль PDO.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]