Are you testing for errors after your execute, or is RaiseError set for your database handle? Sorry, I don't know much about MySQL. If it was a locking problem, I'd either expect your SQL to hang until the lock was released, or return immediately because your update couldn't get a lock...