Ошибка ODBC при подключении к БД Informix с установленным моно - PullRequest
1 голос
/ 15 сентября 2010

Я недавно установил Mono в нашей системе Fedora Linux, чтобы мы могли запускать на ней приложения ASP.NET. Я смог запустить и запустить эту часть, но проблема в том, что мы используем Informix DB, а Mono, похоже, мешает ODBC работать.

Есть ли у кого-нибудь опыт установки ODBC для подключения к базе данных Informix с установленным Mono?

У нас есть:

  • IBM Informix-ESQL версии 3.50.UC7
  • unixODBC 2.2.14
  • Informix SE версия 7.25.UC6R1
  • Моно версия 2.6.7.
  • CSDK-версия: «IBM Informix CSDK версии 3.50, IBM Informix-ESQL версии 3.50.UC7»

Любая помощь будет принята с благодарностью.

вот полный след:


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)

Когда я запускал его за пределами Mono, соединение было очень похожим, за исключением того, что EXIT SQLConnectW дал -3 with return code 0 (SQL_SUCCESS)

1 Ответ

1 голос
/ 19 сентября 2010

Хотя у вас есть проблема только с Mono, вы можете попытаться отследить ее.Включите трассировку ODBC (когда у меня возникли проблемы с ним в Linux, но в документации Informix возникла ошибка, см .: Отслеживание вызовов ODBC для Informix Client для Linux ).

Трассировка клиента Informix из isql и сохраните файл трассировки, затем проследите его из Mono и сравните обе трассы.В Mono trace должно быть больше информации о том, что произошло.

Джонатан попросил вас проверить, используете ли вы новейшую библиотеку CSDK, покажите нам вашу версию драйверов.Может быть, вы используете старые драйверы с ошибкой Unicode, о которой говорил Джонатан, и вам следует обновить драйверы?

...