Thread: Linux SQLDriverConnectW fails but SQLDriverConnect works.

Linux SQLDriverConnectW fails but SQLDriverConnect works.

From
the6campbells
Date:
Any suggestions as to why the following fails. Using the non-W calls to the same DSN works okay from same application and versions of unixODBC 2.2.11

Unfortunately, none of the debug/comm logging of postgres gets generated (does if a successful attach occurs).


Client encoding changed to: UCS2
Content encoding changed to: UCS2
ANSI encoding changed to: UTF-8
SQL_SUCCESS           = SQLAllocHandle(HandleType = SQL_HANDLE_ENV, InputHandle = 0x0, OutputHandlePtr = 0xa451c08)
SQL_SUCCESS           = SQLSetEnvAttr(EnvironmentHandle =0xa451c08, Attribute = SQL_ATTR_ODBC_VERSION, Value=SQL_OV_ODBC3,StringLength = 0)
SQL_SUCCESS           = SQLAllocHandle(HandleType = SQL_HANDLE_DBC, InputHandle = 0xa451c08, OutputHandlePtr = 0xa452198)
SQL_SUCCESS           = SQLSetConnectAttrW(ConnectionHandle =0xa452198, attribute = SQL_ATTR_ODBC_CURSORS, Value=SQL_CUR_USE_DRIVER,StringLength  = 0)
SQL_ERROR             = SQLDriverConnectW(ConnectionHandle = 0xa452198,WindowHandle  = <null pointer>,InConnectionString = DSN=PG84LOCAL;UID=test;PWD=********;;,StringLength1 = SQL_NTS,OutConnectionString = 䔰ʉ䔰ʉ㔈੅㔈੅,BufferLength = 1024,StringLength2Ptr = 0SQL_DRIVER_NOPROMPT)
SQL_SUCCESS           = SQLGetDiagRecW(HandleType = SQL_HANDLE_DBC, Handle = 0xa452198, RecNumber = 1, SQLState = 0, NativeErrorPtr = 0, MessageText = [unixODBC]c, BufferLength = 512, TextLengthPtr = 11)
SQL_NO_DATA_FOUND     = SQLGetDiagRecW(HandleType = SQL_HANDLE_DBC, Handle = 0xa452198, RecNumber = 2, SQLState = 00000, NativeErrorPtr = 0, MessageText = [unixODBC]c, BufferLength = 512, TextLengthPtr = 0)


SQL_DATETIME_LITERALS=119 (3.0) Not Supported
    SQL_DBMS_NAME=17 (1.0) = "PostgreSQL"
    SQL_DBMS_VER=18 (1.0) = "8.4.2"
    ......
    SQL_DM_VER=171 (1.0) = "03.52.0002.0002"
    SQL_DRIVER_HDESC=135 (3.0) Not Supported
    SQL_DRIVER_HSTMT=5 (1.0) Not Supported
    SQL_DRIVER_NAME=6 (1.0) = "psqlodbcw.so"
    SQL_DRIVER_ODBC_VER=77 (2.0) = "03.51"
    SQL_DRIVER_VER=7 (1.0) = "08.04.0100"

Re: Linux SQLDriverConnectW fails but SQLDriverConnect works.

From
Hiroshi Inoue
Date:
the6campbells wrote:
> Any suggestions as to why the following fails. Using the non-W calls to
> the same DSN works okay from same application and versions of unixODBC
> 2.2.11
>
> Unfortunately, none of the debug/comm logging of postgres gets generated
> (does if a successful attach occurs).
>
>
> Client encoding changed to: UCS2
> Content encoding changed to: UCS2
> ANSI encoding changed to: UTF-8
> SQL_SUCCESS           = SQLAllocHandle(HandleType = SQL_HANDLE_ENV,
> InputHandle = 0x0, OutputHandlePtr = 0xa451c08)
> SQL_SUCCESS           = SQLSetEnvAttr(EnvironmentHandle =0xa451c08,
> Attribute = SQL_ATTR_ODBC_VERSION, Value=SQL_OV_ODBC3,StringLength = 0)
> SQL_SUCCESS           = SQLAllocHandle(HandleType = SQL_HANDLE_DBC,
> InputHandle = 0xa451c08, OutputHandlePtr = 0xa452198)
> SQL_SUCCESS           = SQLSetConnectAttrW(ConnectionHandle =0xa452198,
> attribute = SQL_ATTR_ODBC_CURSORS,
> Value=SQL_CUR_USE_DRIVER,StringLength  = 0)
> SQL_ERROR             = SQLDriverConnectW(ConnectionHandle =
> 0xa452198,WindowHandle  = <null pointer>,

InConnectionString = DSN=PG84LOCAL;UID=test;PWD=********;

Is the InConnetcString a UCS2 string?

> ;,StringLength1 =
> SQL_NTS,OutConnectionString = 䔰ʉ䔰ʉ㔈੅㔈੅,BufferLength =
> 1024,StringLength2Ptr = 0SQL_DRIVER_NOPROMPT)
> SQL_SUCCESS           = SQLGetDiagRecW(HandleType = SQL_HANDLE_DBC,
> Handle = 0xa452198, RecNumber = 1, SQLState = 0, NativeErrorPtr = 0,
> MessageText = [unixODBC]c, BufferLength = 512, TextLengthPtr = 11)
> SQL_NO_DATA_FOUND     = SQLGetDiagRecW(HandleType = SQL_HANDLE_DBC,
> Handle = 0xa452198, RecNumber = 2, SQLState = 00000, NativeErrorPtr = 0,
> MessageText = [unixODBC]c, BufferLength = 512, TextLengthPtr = 0)
>
>
> SQL_DATETIME_LITERALS=119 (3.0) Not Supported
>     SQL_DBMS_NAME=17 (1.0) = "PostgreSQL"
>     SQL_DBMS_VER=18 (1.0) = "8.4.2"
>     ......
>     SQL_DM_VER=171 (1.0) = "03.52.0002.0002"
>     SQL_DRIVER_HDESC=135 (3.0) Not Supported
>     SQL_DRIVER_HSTMT=5 (1.0) Not Supported
>     SQL_DRIVER_NAME=6 (1.0) = "psqlodbcw.so"
>     SQL_DRIVER_ODBC_VER=77 (2.0) = "03.51"
>     SQL_DRIVER_VER=7 (1.0) = "08.04.0100"