2010-09-15 34 views
1

J'ai récemment installé Mono sur notre système Linux Fedora afin que nous puissions y exécuter des applications ASP.NET. J'ai réussi à faire fonctionner cette partie, mais le problème est que nous utilisons une base de données Informix et que Mono semble empêcher ODBC de fonctionner.Erreur ODBC lors de la connexion à Informix DB avec mono installé

Est-ce que quelqu'un a déjà eu l'occasion de se connecter à une base de données Informix avec Mono?

Nous avons:

  • IBM Informix-ESQL Version 3.50.UC7
  • unixODBC 2.2.14
  • Informix Version SE 7.25.UC6R1
  • version Mono 2.6.7.
  • CSDK version est "IBM Informix CSDK Version 3.50, IBM Informix-ESQL Version 3.50.UC7"

Toute aide serait grandement appréciée.

ici est la trace complète:


ppid=00003564,pid=00000000   ENTER SQLSetEnvAttr 
     SQLHENV  0x087489C8 
     SQLINTEGER 200 
     SQLPOINTER 0x00000003 
     SQLINTEGER 0 

ppid=00003564,pid=00000000   EXIT SQLSetEnvAttr 
     SQLHENV  0x087489C8 
     SQLINTEGER 200 
     SQLPOINTER 0x00000003 
     SQLINTEGER 0 with return code 0 (SQL_SUCCESS) 

ppid=00003564,pid=00000000   ENTER SQLGetEnvAttr 
     SQLHENV  0x087489C8 
     SQLINTEGER 200 
     SQLPOINTER 0xBFBF84F0 
     SQLINTEGER 0 
     SQLINTEGER * 0x04D05CA0 

ppid=00003564,pid=00000000   EXIT SQLGetEnvAttr 
     SQLHENV  0x087489C8 
     SQLINTEGER 200 
     SQLPOINTER 0xBFBF84F0 
     SQLINTEGER 0 
     SQLINTEGER * 0x04D05CA0 with return code 0 (SQL_SUCCESS) 

ppid=00003564,pid=00000000   ENTER SQLAllocHandle 
     SQLSMALLINT   2 
     SQLHANDLE  0x087489c8 
     SQLHANDLE *  0x0874c4c8 

ppid=00003564,pid=00000000   EXIT SQLAllocHandle 
     SQLSMALLINT   2 
     SQLHANDLE  0x087489c8 
     SQLHANDLE *  0x0874c4c8 with return code 0 (SQL_SUCCESS) 

ppid=00003564,pid=00000000   ENTER SQLSetConnectAttrW 
     SQLHDBC  0x08758F88 
     SQLINTEGER 115 
     SQLPOINTER 0x04D05CA0 
     SQLINTEGER 0 
     SQLINTEGER * 0x00000000 

ppid=00003564,pid=00000000   EXIT SQLSetConnectAttrW 
     SQLHDBC  0x08758F88 
     SQLINTEGER 115 
     SQLPOINTER 0x04D05CA0 
     SQLINTEGER 0 
     SQLINTEGER * 0x00000000 with return code -1 (SQL_ERROR) 

ppid=00003564,pid=00000000   ENTER SQLConnectW 
     SQLHDBC   0x08758F88 
     SQLWCHAR  i 
     SQLSMALLINT  -3 
     SQLWCHAR *  ***** 
     SQLSMALLINT  -3 
     SQLWCHAR *  ***** 
     SQLSMALLINT  -3 
ppid=00003564,pid=00000000   EXIT SQLConnectW 
     SQLHDBC   0x08758F88 
     SQLWCHAR  i 
     SQLSMALLINT  -3 
     SQLWCHAR *  ***** 
     SQLSMALLINT  -3 
     SQLWCHAR *  ***** 
     SQLSMALLINT  -3 with return code -1 (SQL_ERROR) 

ppid=00003564,pid=00000000   ENTER SQLGetDiagRecW 
     ,SQLSMALLINT  2 
     SQLHANDLE  0x08758F88 
     SQLSMALLINT  1 
     SQLWCHAR *  ^R 
     SQLINTEGER * 0xBFBF96E0 
     SQLWCHAR *  ~B 
     SQLSMALLINT  1026 
     SQLSMALLINT * 0xBFBF96EA 

ppid=00003564,pid=00000000   EXIT SQLGetDiagRecW 
     ,SQLSMALLINT  2 
     SQLHANDLE  0x08758F88 
     SQLSMALLINT  1 
     SQLWCHAR *  I 
     SQLINTEGER * 0xBFBF96E0 
     SQLWCHAR *  [ 
     SQLSMALLINT  1026 
     SQLSMALLINT * 0xBFBF96EA with return code 0 (SQL_SUCCESS) 

ppid=00003564,pid=00000000   ENTER SQLGetDiagRecW 
     ,SQLSMALLINT  2 
     SQLHANDLE  0x08758F88 
     SQLSMALLINT  2 
     SQLWCHAR *  I 
     SQLINTEGER * 0xBFBF96E0 
     SQLWCHAR *  [ 
     SQLSMALLINT  1026 
     SQLSMALLINT * 0xBFBF96EA 

ppid=00003564,pid=00000000   EXIT SQLGetDiagRecW 
     ,SQLSMALLINT  2 
     SQLHANDLE  0x08758F88 
     SQLSMALLINT  2 
     SQLWCHAR *  I 
     SQLINTEGER * 0xBFBF96E0 
     SQLWCHAR *  [ 
     SQLSMALLINT  1026 
     SQLSMALLINT * 0xBFBF96EA with return code 100 (SQL_NO_DATA_FOUND) 

ppid=00003564,pid=00000000   ENTER SQLFreeHandle 
     SQLSMALLINT   2 
     SQLHANDLE  0x08758f88 

ppid=00003564,pid=00000000   EXIT SQLFreeHandle 
     SQLSMALLINT   2 
     SQLHANDLE  0x00000000 with return code 0 (SQL_SUCCESS) 

ppid=00003564,pid=00000000   ENTER SQLFreeHandle 
     SQLSMALLINT   1 
     SQLHANDLE  0x087489c8 

ppid=00003564,pid=00000000   EXIT SQLFreeHandle 
     SQLSMALLINT   1 
     SQLHANDLE  0x00000000 with return code 0 (SQL_SUCCESS) 

Quand je l'ai couru en dehors de Mono la connexion était très similaire, sauf le EXIT SQLConnectW a donné -3 with return code 0 (SQL_SUCCESS)

+0

Avez-vous essayé de connecter Informix à partir d'autres outils ODBC comme unixODBC? Quelle est l'erreur de Mono? –

+0

Quelle version du pilote Informix ODBC utilisez-vous? Ou quelle version de l'Informix CSDK utilisez-vous? J'ai rencontré un problème avec la conversion Unicode dans un environnement Mono avec une version légèrement plus ancienne d'ODBC; il a été corrigé dans la/les version (s) d'ODBC la plus récente. Mais je devrais rechercher les numéros de bogue, etc. –

+0

Salut, Merci pour vos réponses. Nous utilisons UnixODBC 2.2.14 et Informix SE version 7.25.UC6R1. Nous avons installé la version 2.6.7 de Mono. – Frankied

Répondre

1

Alors que vous avez un problème uniquement avec Mono, vous pouvez essayez de le tracer. Activer le traçage ODBC (une fois que j'ai eu des problèmes avec Linux, mais qu'il y avait une erreur dans les docs Informix, voir: Tracing ODBC calls for Informix Client for Linux).

Tracez le client Informix à partir de isql et enregistrez le fichier de trace, puis tracez-le à partir de Mono et comparez les deux traces. En trace Mono devrait être plus d'informations sur ce qui s'est passé. Jonathan vous a demandé de vérifier si vous utilisez la bibliothèque CSDK la plus récente, montrez-nous votre version des pilotes. Peut-être que vous utilisez d'anciens pilotes avec un bug Unicode dont parlait Jonathan et que vous devriez mettre à jour les pilotes?

+0

Salut, Merci pour le retour, la version CSK est "IBM Informix CSDK version 3.50, IBM Informix-ESQL version 3.50.UC7". – Frankied