http://www.perlmonks.org?node_id=1101057


in reply to fetchrow_array loop in perl 5.10

Potentially, this is result of DB upgrade. For example SQLite databases have changed the way how they manipulate locks on files. Depending on which table is read and which table is updated you may get different locking problems. One can play with BEGIN TRANSACTION or autocommit settings to avoid dead-locking.

Anyway, most likely you should provide information about DB that is being used and SQL statements that are executed.

Replies are listed 'Best First'.
Re^2: fetchrow_array loop in perl 5.10
by sundialsvc4 (Abbot) on Sep 18, 2014 at 23:23 UTC

    Judging from the trace-outputs listed above, I would hazard a guess that the target is DB/2.

    However, your mention of MySQL and locking brings up once again a point that I found to be hugely important:   that you should always use transactions with SQLite, especially when writing, because otherwise SQLite will physically verify every write.   There’s no buffering, no “lazy writing,” and this is by design (in the SQLite engine, AFAIK).   I haven’t had need to keep up with driver-changes and so on for quite some time, so I don’t know what recently might have changed.   I simply, as a blanket rule, use transactions for everything SQLite, including reads.

    If the target is DB/2, then I am “entirely convinced” that the actual situation that the OP is facing right now is ... bogosity.   The present behavior appears to be nonsensical, and most likely it is, because the root cause will likely to be “this version’s apples trying their best to talk to last version’s oranges, or vice-versa.”   There is probably nothing fundamentally wrong with this source-code:   the problem is in the particulars of the (not-quite right ...) environment in which the code is trying its best to execute.   “Red herrings.”   Oooh, I hate it when that happens.

      You are making factually incorrect statements.

      You have been disputed on these exact same points several times before. You seem to like to rely on the saying that "the best way to get the correct answer on the Internet is to post the wrong one", but this time I'm not giving you the benefit of that effect. Go through your own posting history, you have been shown to be wrong plenty of times, without correcting yourself, without acknowledging the corrections, or even learning from them! I would love it if you would stop posting if you don't know what you're talking about, but I'm betting you won't do that.

      Therefore, this is merely a warning to others that the parent node contains incorrect statements.