php pdo подключен к DB2 по-разному CODEPAGE

Я подключаюсь к DB2 DB

$sql = 'CALL procedures.name(1,1,'text',1,1,'2017-08-30','2017-08-31',?,?)'; try { $con = new PDO("idb:all_the_connections_stuu",'user','pass', [ PDO::ATTR_PERSISTENT => FALSE, PDO::ATTR_ERRMODE => PDO:ERRMODE_EXCEPTION, PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::ATTR_AUTOCOMMIT => 0 ] ); $stmt = $con->prepare($sql); $stmt->bindParam(1, $errorNumber, PDO::PARAM_INT); //also trying without PDO::params $stmt->bindParam(2, $errorCode, PDO::PARAM_STR, 800); //and with |PDO::PARAM_INPUT_OUTPUT $stmt->execute(); //return *TRUE* var_dump($errorNumber); //return NULL var_dump($errorCode); //return NULL var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); //returns Error $stmt->closeCursor(); $stmt = null; } catch (PDOException $e) { echo ($e->getMessage()); } 

и получил эту ошибку:

 Fatal error: Uncaught PDOException: SQLSTATE[57017]: <<Unknown error>>: -332 [IBM][CLI Driver][DB2] SQL0332N Character conversion from the source code page "" to the target code page "" is not supported. SQLSTATE=57017 (SQLFetchScroll[-332] at /home/user/shared/PDO_IBM-1.3.4/ibm_statement.c:1306) in /var/www/html/server/testsIBM/index.php:80 Stack trace: #0 /var/www/html/server/testsIBM/index.php(80): PDOStatement->fetchAll(7, 0) #1 {main} thrown in /var/www/html/server/testsIBM/index.php on line 80 

Если я подключаюсь к db2_connect

 $con = db2_connect("DATABASE=DB2D;HOSTNAME=10.243.13.65;PORT=5000;PROTOCOL=TCPIP;USERNAME=asdf23;PASSWORD=asdfasf1","", "") 

и вывод db2_client_info($con) и db2_server_info($con) Я вижу, что CONN_CODEPAGE из client = 819 и DB_CODEPAGE с сервера = 1208.

Как установить CONN_CODEPAGE в моем клиенте? Я уже установил LANG в локау CentOs, но все же получил ошибку преобразования символов.

______upd:

Текущий $ LANG = en_US.utf8 (также в locale -a у меня есть en_US, en_US.iso88591, en_US.iso885915, en_US.utf8)

Независимо от того, что $ LANG задает вывод из db2_client_info ($ con), все тот же:

  ["APPL_CODEPAGE"]=> int(819) ["CONN_CODEPAGE"]=> int(819) 

И та же ошибка о преобразовании символов со страницы исходного кода

Я использую PHP + Apache. Настройка Apache httpd.conf по умолчанию. Настройка разных локалей ничего не изменила.

В php-коде setlocale ничего не меняет.

Я думаю, что этот параметр хранится где-то в другом месте, а драйверы ibm_db2 или pdo_ibm используют его. = |

____upd2

Единственный способ, которым я узнал, – изменить DB2CODEPAGE с установленного клиента db2. Но у меня нет установленного клиента. Я использую библиотеки.

Теперь я установил v11.1.2fp2_linuxx64_client.tar.gz (1.03 GB). Но я не могу почитать клиента db2. Думаю, мне нужен еще один новый вопрос = \

____upd3

После всех манипуляций с CentOs, локалями apache – я все еще получаю исключение -322. Независимо от того, что я изменил – db2_client_info ($ con) все еще показывает мне 819 CodePage. И все работает хорошо, пока fetch()/fetchAll()

CentOs 7.3, PHP 7.1.8 с PDO_IBM 1.3.4-patched и ibm_db2. НО я делаю эти модули из источников PECL (сервер не имеет подключения к Интернету).

И у меня также нет каких-либо продуктов DB2, установленных на сервере моих приложений (вот почему я решаю, что CodePage получается из локали CentOs). По вашему тесту, кажется, что DB2 data server client требуется?