› Clovertech Forums › Read Only Archives › Cloverleaf › Cloverleaf › ODBC error
[DataDirect][ODBC SQL Server Driver]Invalid attribute/option identifier
I haven’t seen that one. Have you turned on tracing?
In your odbc.ini file (referred to by the environment variable ODBCINI), look for the [ODBC] section. There should be a line that says “Trace=0”. Change it to “Trace=1”. Run your script again and look for a trace file which will probably be called odbctrace.out.
The error can be called from a number of different places. Here is what I found in some research. Maybe this can point you in the right direction.
HY092 Invalid attribute/option identifier
SQLAllocHandle
(DM) The HandleType argument was not: SQL_HANDLE_ENV, SQL_HANDLE_DBC, SQL_HANDLE_STMT, or SQL_HANDLE_DESC.
SQLBulkOperations
(DM) The value specified for the Operation argument was invalid.
The Operation argument was SQL_ADD, SQL_UPDATE_BY_BOOKMARK, or SQL_DELETE_BY_BOOKMARK, and the SQL_ATTR_CONCURRENCY statement attribute was set to SQL_CONCUR_READ_ONLY.
The Operation argument was SQL_DELETE_BY_BOOKMARK, SQL_FETCH_BY_BOOKMARK, or SQL_UPDATE_BY_BOOKMARK, and the bookmark column was not bound or the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.
SQLCopyDesc
The call to SQLCopyDesc prompted a call to SQLSetDescField, but *ValuePtr was not valid for the FieldIdentifier argument on TargetDescHandle.
SQLDriverConnect
(DM) The DriverCompletion argument was SQL_DRIVER_PROMPT, and the WindowHandle argument was a null pointer.
SQLEndTran
(DM) The value specified for the argument HandleType was neither SQL_HANDLE_ENV nor SQL_HANDLE_DBC.
SQLFreeStmt
(DM) The value specified for the argument Option was not:
SQL_CLOSE
SQL_DROP
SQL_UNBIND
SQL_RESET_PARAMS
SQLGetConnectAttr, SQLGetEnvAttr, SQLGetStmtAttr
The value specified for the argument Attribute was not valid for the version of ODBC supported by the driver.
SQLParamData
SQLSetConnectAttr
(DM) The value specified for the argument Attribute was not valid for the version of ODBC supported by the driver.
(DM) The value specified for the argument Attribute was a read-only attribute.
SQLSetDescField
The value in *ValuePtr was not valid for the FieldIdentifier argument.
The FieldIdentifier argument was SQL_DESC_UNNAMED, and ValuePtr was SQL_NAMED.
SQLSetEnvAttr
(DM) The value specified for the argument Attribute was not valid for the version of ODBC supported by the driver.
SQLSetPos
(DM) The value specified for the Operation argument was invalid.
(DM) The value specified for the LockType argument was invalid.
The Operation argument was SQL_UPDATE or SQL_DELETE, and the SQL_ATTR_CONCURRENCY statement attribute was SQL_ATTR_CONCUR_READ_ONLY.
SQLSetStmtAttr
(DM) The value specified for the argument Attribute was not valid for the version of ODBC supported by the driver.
(DM) The value specified for the argument Attribute was a read-only attribute.
odbc SQLAllocHandle SQL_HANDLE_ENV SQL_NULL_HANDLE henv
odbc SQLSetEnvAttr $henv SQL_ATTR_ODBC_VERSION SQL_OV_ODBC3 0
odbc SQLAllocHandle SQL_HANDLE_DBC $henv hdbc
I happened to be looking at the documentation for enabling tracing in Unix for DataDirect ODBC connections just the other day. Here’s the relevant excerpt to turn tracing on:
System Information (odbc.ini) File
The [ODBC] section of the system information file includes three keywords related to tracing: Trace, TraceFile, and TraceDll. For example:
Trace=1
TraceFile=odbctrace.out
TraceDll=ODBCHOME/lib/odbctrac.so
In this example, tracing is enabled, trace information is logged in a file named odbctrace.out, and odbctrac.so performs the tracing.
You enable tracing by setting the value of Trace to 1. Set the value to 0 to disable tracing. Tracing continues until you disable it. Be sure to turn off tracing when you are finished reproducing the issue because tracing decreases the performance of your ODBC application.
To specify the path and name of the trace log file, enter it as the value for TraceFile. If no location is specified, the trace log resides in the working directory of the application you are using.
DataDirect Technologies ships a default shared object, odbctrac.so, to perform tracing. If you want to use a custom shared object instead, enter the path and name of the shared object as the value for TraceDll.
Additionally, here is a link to the DataDirect troubleshooting guide:
I hope this helps.
Jim
Use the hcitcl command line and try each of the commands that you are using. Easiest way I have found to do this is cat out the TCL file and just copy and paste them in one by one. Whichever one gives you a return code of SQL_ERROR will be the one that you need concentrate on. I am going to take a wild guess that it is the SQLSetEnvAttr command because the database that you are connecting to does not like those particular attributes but that is just a very wild guess.