SQL-Retriever ODBC

FAQ

FAQ: Cannot use Informix database without transactions

Informix databases created without transactions (log) cannot be used with SQL-Retriever ODBC driver.

Cause

If an Informix database is created without the "with log" clause, then transactions are not available to that database. The SQL-Retriever ODBC server relies on the fact that it can start and end transactions.

The ODBC Programmer's Reference states under the SQLTransact() call that "Drivers or data sources that do not support transactions are effectively always in autocommit mode". Therefore, calling SQLTransact with SQL_COMMIT will return SQL_SUCCESS. However, calling SQLTransact with SQL_ROLLBACK will result in SQLSTATE S1C00 (Driver not capable), indicating that a 'rollback' can never be performed.

Solution

To work around this, use the Informix dbexport utility to export the database. Re-import the data into a new database with logging (use dbimport with the -l option.)