2017-10-10 14 views
0

SQLSTATE = HY000, SQLDriverConnect: -23101 [Informix] [Informix ODBC pilote] [Informix] Non spécifié Système Error = -23101PHP PDO_INFORMIX erreur Locale -23101

OS: Ubuntu 16.04 64Bits

  • Installer Informix CSDK (version 4,10)
  • Compile PDO_INFORMIX (version 1.3.3)

  • Activer l'extension pdo_informix.so dans la configuration apache

  • variables d'environnement apache

    1 - INFORMIXDIR =/opt/Informix (où j'ai installé CSDK)

    2 - DB_LOCALE = en_US.819

    3 - CLIENT_LOCALE = en_US.utf8

chaîne de connexion: $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);

L'erreur 23101 concerne DB_LOCALE et CLIENT_LOCALE, mais tout est défini.

+0

ouais, 23101 est certainement de ne pas trouver des fichiers GLS. Êtes-vous sûr que INFORMIXDIR est correctement configuré? Vous pouvez essayer de définir la variable d'environnement "GLSDEBUG" sur "on" (par exemple exporter GLSDEBUG = on) et vérifier la sortie exécutant le script. Il devrait suivre tous les appels GLS, montrant quel fichier ne s'ouvre pas. –

+0

Vous utilisez OPTIMIZEAUTOCOMMIT en majuscules. Etes-vous sûr que vous êtes autorisé à utiliser 'db_locale' et que vous n'êtes pas obligé d'utiliser' DB_LOCALE'? Idem 'client_locale' et' CLIENT_LOCALE'? –

Répondre

0

En regardant le texte dans le message d'erreur, je pense que vous avez plus qu'un problème de locale (23101).

Si vous obtenez: « système Non spécifié Erreur »

plutôt que: « Impossible de charger les catégories locale »

cela signifie que le pilote n'a pas pu trouver le message texte correct pour le - 23101 erreur, qui se produit généralement lorsque INFORMIXDIR n'est pas correctement défini.

Les fichiers '.iem' (dans $ INFORMIXDIR/msg/en_us/0333) contiennent le message texte pour chaque numéro d'erreur. Si un message ne peut pas être trouvé, vous obtenez une erreur générique 'Unspecified System Error'. Vous avez mentionné Apache, donc je suppose que vous essayez d'exécuter un code PHP à partir d'Apache, pas seulement la ligne de commande. Apache ne transmet peut-être pas la variable d'environnement au module PHP. Si le module env apache (mod_env.so) est activé, vous pouvez essayer de mettre quelque chose comme ceci dans votre fichier httpd.conf

setenv INFORMIXDIR '/opt/informix' 

donc la variable INFORMIDIR sera transmise au module PDO.

+0

J_S, INFORMIXDIR est défini comme vous l'avez dit (setenv INFORMIXDIX 'opt/informix' dans mon apache2.conf Le module mod_env est activé L'erreur de code -23101 concerne le problème des paramètres régionaux. –

+0

23101 est "impossible de charger les catégories de paramètres régionaux", mais vous obtenez "erreur système non spécifiée" à la place, et cela arrive uniquement lorsque la fonction chargée de charger le message pour une erreur spécifique ne trouve pas les fichiers messages. Et cela se produit lorsque INFORMIXDIR n'est pas défini. Vous pouvez essayer de faire un truss (strace) du processus httpd et de vérifier où vous essayez de charger les fichiers iem/lc (locale). –