John wrote:
> That's not something that is generally necessary with other RDBMSs.

I disagree. I would imagine all transaction-oriented RDBMS's work this way.
Oracle certainly does. You need to do an explicit commit or rollback to
release the lock. (or close the cursor, etc.)

Unless, of course, autocommit is on.

--Walt Weaver
  Bozeman, Montana

-----Original Message-----
From: John Kemp [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, January 09, 2002 1:40 PM
To: Heikki Tuuri
Cc: [EMAIL PROTECTED]
Subject: Re: InnoDB : Lock wait timeout exceeded; Try restarting
transaction


Heikki,

Hmm. That's interesting. So if you do a single command, say

INSERT INTO Table1 (X, Y, Z) VALUES ( A, B, C) ;

You actually need to write (I'm not sure of the exact transactional 
syntax for Mysql) -

BEGIN ; --begin a transaction
INSERT INTO Table1 (X, Y, Z) VALUES ( A, B, C) ;
COMMIT ; -- end a transaction

Even for a single statement with a single row update/insert?

That's not something that is generally necessary with other RDBMSs.

Can you confirm that?

Thanks,

John

Heikki Tuuri wrote:

> Hi!
> 
> Looks like your are not committing your transactions. Every UPDATE and
> INSERT automatically sets row level locks, which are only removed when you
> do a COMMIT or ROLLBACK.
> 
> Or you have set innodb_lock_wait_timeout too small in my.cnf.
> 
> InnoDB does not set table level locks. Only LOCK TABLES sets table level
> locks.
> 
> You can use innodb_lock_monitor to make the mysqld server program print
> (somewhat cryptic) information about who has locks and where. See the
InnoDB
> manual at http://www.innodb.com/ibman.html
> 
> Best regards,
> 
> Heikki Tuuri
> Innobase Oy
> ---
> InnoDB - transactions, row level locking, and foreign key support for
MySQL
> See http://www.innodb.com, download MySQL-Max from http://www.mysql.com
> 
> ..........
> 
> Hi SAm,
> 
> I actually had a similar problem myself, but was unable to prove it was
> the persistent connection itself causing this. I'm wondering if this
> means that INNODB thinks that a connection that is now 'sleeping' (ie.
> where a connection was created, used, but is now unused but still open)
> might be locking the whole table erroneously for some reason? Which
> version are you using? I could not figure out why Innodb would think the
> table was locked, other than if someone specifically said 'LOCK TABLE'
> in a query, which wasn't the case.
> 
> Any thoughts?
> 
> John
> 
> 
> 
> Sam Lam wrote:
> 
> 
>>I recently switched to InnoDB & persistent connections from PHP.
>>
>>Lately I've been getting these errors "Lock wait timeout exceeded; Try
>>restarting transaction" on an UPDATE on table. The system is in
>>development so there is at most one other user ( a back end Perl script).
>>
>>When I switched PHP back to non-persistent connections I stopped getting
>>that error.
>>
>>How does one use persistent PHP connections & InnoDB to avoid this error ?
>>
>>
> 
> 
> 
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail
<[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> 
> .
> 
> 



---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail
<[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to