PHP PDO_Informix语言环境错误-23101

时间:2017-10-10 12:55:12

标签: php pdo informix

  

SQLSTATE = HY000,SQLDriverConnect:-23101 [Informix] [Informix ODBC Driver] [Informix]未指定的系统错误= -23101

操作系统:Ubuntu 16.04 64位

  • 安装Informix CSDK(版本4.10)
  • 编译PDO_INFORMIX(版本1.3.3)

  • 在apache config中启用pdo_informix.so扩展

  • 设置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有关,但全部都已设置。

1 个答案:

答案 0 :(得分:1)

查看错误消息中的文本,我认为您不仅仅是区域设置问题(23101)。

如果您收到:“未指定系统错误

而不是:“无法加载区域设置类别

这意味着驱动程序无法找到-23101错误的正确文本消息,这通常在未正确设置INFORMIXDIR时发生。

'.iem'文件(在$ INFORMIXDIR / msg / en_us / 0333中)包含每个错误编号的文本消息。如果找不到消息,则会得到通用的“未指定的系统错误”。

你提到了Apache,所以我猜你试图从apache运行PHP代码,而不仅仅是命令行。 Apache可能没有将env变量传递给PHP模块。 如果启用了apache env模块(mod_env.so),您可能想尝试在httpd.conf文件中添加这样的内容

 setenv INFORMIXDIR '/opt/informix'   

因此INFORMIDIR变量将传递给PDO模块。