Gu Lei 写道:
Description:
SQL state: HYT00
Native error: 1213
SQL Errortext: Deadlock found when trying to get lock; try restarting
transaction
SQL STATEMENT:
insert into OCHARTORGANIZATION
(CORPID,MODIFIED,MODIFIER,ORGIID,PARENTIID)
values(?,?,?,?,?)
mysql> desc OCHARTORGANIZATION;
+-----------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default |
Extra |
+-----------+--------------+------+-----+-------------------+----------------+
| CORPID | varchar(32) | YES | | NULL
| |
| MODIFIED | timestamp | YES | | CURRENT_TIMESTAMP
| |
| MODIFIER | varchar(255) | YES | | NULL
| |
| ORGIID | varchar(32) | | PRI |
| |
| PARENTIID | varchar(32) | YES | | NULL
| |
| SN | int(11) | | UNI | NULL |
auto_increment |
+-----------+--------------+------+-----+-------------------+----------------+
6 rows in set (0.00 sec)
client: OS fedora3 MyODBC3.51.10 unixODBC 2.2.9
server: OS RedHat Adavanced server3.0 MySQL max 4.1.10
My program use multi-threads to insert records into some tables by
MyODBC. Each
thread has one connection with AUTOCOMMIT OFF.
When insert into other tables it's OK.
Error occured when execute this statement concurrently:
insert into OCHARTORGANIZATION
(CORPID,MODIFIED,MODIFIER,ORGIID,PARENTIID)
values(?,?,?,?,?)
[EMAIL PROTECTED] mysql]$ cat /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL
Driver =
/home/hyli/asterisk_software/MyODBC-3.51.10-pc-linux-i686/lib/libmyodbc3.so
Setup = /usr/lib/libodbcmyS.so
FileUsage = 1
If I only run one thread to insert all records, error won't occur.
If my program connects to the local mysqld(on the same machine with my
program),
error won't occur.
Local mysqld's version is also MySQL max 4.1.10
Before I added this code everything is OK.
char autocommit[]="SET AUTOCOMMIT=0";
rc =
SQLExecDirect(hstmtset,(SQLCHAR*)autocommit,sizeof(autocommit)-1);
I really need some solution.
Best regards,
Gu Lei
--

I've found out the reason.
After delete 'Threading = 0' in /etc/odbcinst.ini my program works.
But with MYSQL 5.03 my program still shows an error :
Lock wait timeout exceeded; try restarting transaction.
With both MySQL4.1.12standstard and MySQL4.1.10 max my program is OK
now.
Regards
Gu Lei
|