Bug #28004 | Using transaction in C# lock time out problem | ||
---|---|---|---|
Submitted: | 21 Apr 2007 19:42 | Modified: | 23 Apr 2007 1:24 |
Reporter: | newbie Shai | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.0.27 | OS: | Windows |
Assigned to: | Heikki Tuuri | CPU Architecture: | Any |
[21 Apr 2007 19:42]
newbie Shai
[21 Apr 2007 23:58]
Heikki Tuuri
Hi! Where does your application commit its transaction? InnoDB's default lock wait timeout is 50 seconds. I assume a single transaction in your application does not last that long? You can use the innodb_lock_monitor to print locks held by different users. That may help to find what is wrong. Regards, Heikki
[22 Apr 2007 2:30]
newbie Shai
Dear Heikki Tuuri, I commit after fulling running the for loop. Thus I will run this code below try { transactionCentral.Commit(); } catch (MySql.Data.MySqlClient.MySqlException ex) { try { transactionCentral.Rollback(); } catch (MySqlException ex1) { MessageBox.Show("An exception of type " + ex.GetType() +" was encountered while inserting the data."); } } I am not sure how to use innodb_lock_monitor ? Can I get more help on this please ? I would like to master innodb I know I am new to it. When must I run innodb_lock_monitor while I am running the system or after the system. Thanks a lot in advance for all your help.
[22 Apr 2007 3:07]
Heikki Tuuri
Hi! Please look at http://dev.mysql.com/doc/refman/5.0/en/innodb-monitor.html about how to use InnoDB monitors. You can also use the SHOW INNODB STATUS\G command to spot any dangling, uncommitted transactions. Regards, Heikki
[22 Apr 2007 7:27]
newbie Shai
Innodb status output file
Attachment: innod.xml (text/xml), 3.16 KiB.
[22 Apr 2007 7:28]
newbie Shai
Dear Heikki Tuuri, I tried using the statement SHOW INNODB STATUS\G but gives me a syntax error. So what shoud I do then? But the statment SHOW INNODB STATUS work. Since I working using the client sqlyog so I managed to import an xml file which I really dont know how to read. I would like to know the details which is happening in my loop ? How does it work is it that each of my updates works immediately or only upon commit ? Why do you think my lock time out error is happening is it because I am updating the same row immediatly one after another is it ? Is that the row gets lock? I have attached the file too.Hope you can clear my doubts. Thanks.
[22 Apr 2007 7:33]
newbie Shai
Dear Heikki Tuuri, I will like to give you some additional information actually why I am running transaction is that each update I update one copy in the local machine and another one is on another machine. So the error of lock time out is happening on the another machine. So maybe this information can help you see my problem better I guess. Many thanks.
[22 Apr 2007 17:06]
Heikki Tuuri
Hi! The SHOW INNODB STATUS does not show any dangling transaction nor any transaction waiting for a lock. Please study more carefully, and reopen this bug report if you can find a MySQL/InnoDB bug. Regards, Heikki
[23 Apr 2007 1:24]
newbie Shai
Dear Heikki, I tried the SHOW INNODB STATUS\G it works from the command line. So in that got one section of transaction ? So how can I can know which one is dangling and how to go about the dangling transaction restart the mysql server is it ? Why is it that the SHOW INNODB STATUS\G doesnt work in mysql client ? Another question is where can I get the details of what is happenning actually in the loop. Thanks.