could not insert new row into the table
Posted in 2011
A user on Informix 11.70 (Windows) got error -271 "could not insert new row" with ISAM error -105 on inserts. Replies said -105 indicates corrupted on-disk structures: run oncheck -cR, -cDI (and -cD/-cI on the table/indexes), drop/rebuild a bad index, otherwise restore from archive, dbexport the data first, or call IBM support. Weeks later the poster reported it still unsolved, now failing only with more than ~4 concurrent VB6 users. Suggestions then were index duplicate-list/split contention, table fragmentation for parallelism, long-held locks from non-optimistic locking (an app design issue), and a request for the actual ISAM error. No resolution is recorded.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: Error Codes & Troubleshooting
Hi, I am using Informix 11.70TC1IE on windows. When i insert the data in 1 table it gives the error message -271 could not insert new row into the table and ISAM error -105. So, please give me the solution & tell me the what can i do? Thanks.
It could be several things.
Try performing SELECTs on the table without WHERE clauses. Then try
performing SELECTs using WHERE clauses on the columns indexed.
Run onchecks on your table and its indexes: oncheck -cD
<database>.<table> and oncheck -cI <database>.<table>
If it is the table, you need to perform a restore. If it is one of the
indexes, drop it and recreate it providing that you can drop it.
It is most likely your index that might have problems.
Check you disk space where the table and indexes were created.
Cordialement, Regards,
Khaled Bentebal
Directeur Général - ConsultiX
Président UGIF - User Group Informix France
IIUG - Board of Directors
Tél: 33 (0) 1 39 12 18 00
Fax: 33 (0) 1 39 12 18 18
Mobile: 33 (0) 6 07 78 41 97
Email: khaled.bentebal@consult-ix.fr
Site Web: www.consult-ix.fr
Le 29/11/11 06:44, SANDIP SHINDE a écrit :
> Hi,
>
> I am using Informix 11.70TC1IE on windows.
>
> When i insert the data in 1 table it gives the error message -271 could not
> insert new row into the table and ISAM error -105.
>
> So, please give me the solution& tell me the what can i do?
>
> Thanks.
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
ISAM error -105 means that something has damaged the disk structures thatInformix created inside one or more of your chunks. Sometimes, if the
damage isn't too bad, oncheck can fix it. Try:
oncheck -cR
oncheck -cDI
The oncheck utility will tell you what it found and what it could do about
it. If oncheck cannot fix the damage, you will have to restore the
instance from an archive. When you have done that, I would run the
onchecks again to verify that the damage had not already been present when
the archive was made. If so, you could try restoring an older archive and
rolling forward your logical logs and then run the onchecks again. If that
fails, the only other thing you could try is to call IBM tech support.
Sometimes they can patch the problem well enough that you can dbexport your
databases (or whatever part of them is savageable), rebuild the instance
from scratch, and reload the data with dbimport.
Honestly, the first think I would do is to run the dbexports to get a copy
of all of your databases in a safe place before trying anything else.
Art
Art S. Kagel
Advanced DataTools (www.advancedatatools.com)
Blog: http://informix-myview.blogspot.com/
Disclaimer: Please keep in mind that my own opinions are my own opinions
and do not reflect on my employer, Advanced DataTools, the IIUG, nor any
other organization with which I am associated either explicitly,
implicitly, or by inference. Neither do those opinions reflect those of
other individuals affiliated with any entity with which I am affiliated nor
those of the entities themselves.
On Tue, Nov 29, 2011 at 12:44 AM, SANDIP SHINDE <sandipvshinde1983@gmail.com
> wrote:
> Hi,
>
> I am using Informix 11.70TC1IE on windows.
>
> When i insert the data in 1 table it gives the error message -271 could not
> insert new row into the table and ISAM error -105.
>
> So, please give me the solution & tell me the what can i do?
>
> Thanks.
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--00151773d9d29db9a504b2df284f
Currently this problem was not solved. Currently we are doing the data entry & there are 10 concurrently users insert the data. When there are max 4 concurrently users insert data that time there is no error occurred but when concurrently user greater than 4 that time it gives an error -271 could not insert new row into the table. I am using SET LOCK MODE TO WAIT 5 in VB 6.0 coding after begintrans e.g. dim str as string dim qry as string db.begintrans str = "SET LOCK MODE TO WAIT 5;" db.execute str qry = "" qry = "insert into table1 values(1,"Sandip")" db.execute qry I already set the lock mode to dirty read & row level locking. please any one give me reply as earlier. I m waiting for reply. Thanks.
If you are insert the same value over and over and
you have indexes then the duplicate list on the index
will get large and splits could take a some time
when the number of rows is large. If you where
just providing an example of data and the real
data does vary then I would consider using
data partitioning (fragmentation). This will allow
you to spread the locking out over several partitions
and get more parallelism. This assumes the data
in column c1 is varying. If the data is all the same
then I would look at round robin fragmentation.
create table tab1 (c1 serial, c2 char(20))
fragment by expression
partition p1 mod(c1,3)=0 in rootdbs,
partition p2 mod(c1,3)=1 in rootdbs,partition p3 mod(c1,3)=2 in rootdbs
lock mode row
;
John F. Miller III
STSM, Embedability Architect
miller3@us.ibm.com
503-578-5645
IBM Informix Dynamic Server (IDS)
(Embedded image moved to file: pic01171.gif)
ids-bounces@iiug.org wrote on 01/06/2012 09:50:53 PM:
> From: "SANDIP SHINDE" <sandipvshinde1983@gmail.com>
> To: ids@iiug.org
> Date: 01/06/2012 09:52 PM
> Subject: Re: could not insert new row into the table [25841]
> Sent by: ids-bounces@iiug.org
>
> Currently this problem was not solved.
>
> Currently we are doing the data entry & there are 10 concurrently
> users insert
> the data. When there are max 4 concurrently users insert data that time
there
> is no error occurred but when concurrently user greater than 4 that time
it
> gives an error -271 could not insert new row into the table.
>
> I am using SET LOCK MODE TO WAIT 5 in VB 6.0 coding after begintrans
>
> e.g.
>
> dim str as string
> dim qry as string
> db.begintrans
> str = "SET LOCK MODE TO WAIT 5;"
> db.execute str
>
> qry = ""
> qry = "insert into table1 values(1,"Sandip")"
> db.execute qry
>
> I already set the lock mode to dirty read & row level locking.
>
> please any one give me reply as earlier.
>
> I m waiting for reply.
>
> Thanks.
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
You'll need the ISAM error. Regards On Sat, Jan 7, 2012 at 5:50 AM, SANDIP SHINDE <sandipvshinde1983@gmail.com>wrote: > Currently this problem was not solved. > > Currently we are doing the data entry & there are 10 concurrently users > insert > the data. When there are max 4 concurrently users insert data that time > there > is no error occurred but when concurrently user greater than 4 that time it > gives an error -271 could not insert new row into the table. > > I am using SET LOCK MODE TO WAIT 5 in VB 6.0 coding after begintrans > > e.g. > > dim str as string > dim qry as string > db.begintrans > str = "SET LOCK MODE TO WAIT 5;" > db.execute str > > qry = "" > qry = "insert into table1 values(1,"Sandip")" > db.execute qry > > I already set the lock mode to dirty read & row level locking. > > please any one give me reply as earlier. > > I m waiting for reply. > > Thanks. > > > > ******************************************************************************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > -- Fernando Nunes Portugal http://informix-technology.blogspot.com My email works... but I don't check it frequently... --20cf3063e33720e19204b5f0a92e
Are you using optimistic locking protocol in the VB app? If not then your locks are not transient. They are living for all of the time that the users are examining and entering the data. Sounds like an application design issue. Art On Jan 7, 2012 12:51 AM, "SANDIP SHINDE" <sandipvshinde1983@gmail.com> wrote: > Currently this problem was not solved. > > Currently we are doing the data entry & there are 10 concurrently users > insert > the data. When there are max 4 concurrently users insert data that time > there > is no error occurred but when concurrently user greater than 4 that time it > gives an error -271 could not insert new row into the table. > > I am using SET LOCK MODE TO WAIT 5 in VB 6.0 coding after begintrans > > e.g. > > dim str as string > dim qry as string > db.begintrans > str = "SET LOCK MODE TO WAIT 5;" > db.execute str > > qry = "" > qry = "insert into table1 values(1,"Sandip")" > db.execute qry > > I already set the lock mode to dirty read & row level locking. > > please any one give me reply as earlier. > > I m waiting for reply. > > Thanks. > > > > ******************************************************************************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > --90e6ba6e88923de78604b60665d2
Related threads
- RE: transfer via comp.databases.informix
- dbimport hangs
- Assert Failed errno 271 ISAM ERR -12803
- Syslocks table