SQLSTATE = HY000,SQLDriverConnect:-23101 [Informix] [Informix ODBC Driver] [Informix]未指定的系统错误= -23101
操作系统:Ubuntu 16.04 64位
编译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有关,但全部都已设置。
答案 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模块。