Description
The user is trying to update an INFORMIX table from two different processes using Attunity Connect. The environment variable IFX_DEF_TABLE_LOCKMODE was set to perform ROW level locking as follows:


IFX_DEF_TABLE_LOCKMODE=ROW;export IFX_DEF_TABLE_LOCKMODE


However, trying to update the same table from two different processes causes the following error:
>nav_util execute informix --- First session

NavSQL > begin;

NavSQL > insert into account values(1, 1000);

Executing: insert into account values(1, 1000)
OK
1 row affected

>nav_util execute informix --- Second session

NavSQL > begin;

NavSQL > insert into account values(100,1000);

Executing: insert into account values(100,1000)
DRV_Execute: DB_INF_ENGINE (1504): ; Error -271: Could not insert new row into the table.
[A00A] Execute query failed, datasource is 'informix', SQL text is 'INSERT INTO account (id,num) VALUES (?,?)'



Solution
There could be some explanations for this behaviour:

The table was created with an explicit 'LOCK MODE PAGE/TABLE' clause.
The DEF_TABLE_LOCKMODE configuration parameter in INFORMIX is not set to 'ROW'.
To solve the problem, you can perform one of the followings:

Create the table with explicit 'LOCK MODE ROW':
NavSQL> text={{create table account(id integer, balance integer) lock mode row}};

Modify the INFORMIX settings and make sure to set the DEF_TABLE_LOCKMODE to 'ROW'.