On Wed, 10 Jul 2002, Steve Hay wrote:

> Richard Fox wrote:
> 
> >Can your INT id be overflowing, i.e. reaches the max value for int and
> >starting at 1 again?
> >Rich
> >
> I don't think it is because (a) the last value that was successfully 
> INSERT'ed - usually around 40,000-odd - is well short of the maximum 
> INT, and (b) it doesn't always fall over after some particular number of 
> iterations - it falls over at different, apparently random, times each 
> time I try the test.
> 
> - Steve

Steve,

I tried your example on MyIsam tables; no problems with auto_increment at
all, except for a few

ERROR 1040: Too many connections

when 100 scripts are inserting concurrently at full speed.

Thomas

> 
> >----- Original Message -----
> >From: "Steve Hay" <[EMAIL PROTECTED]>
> >To: <[EMAIL PROTECTED]>
> >Sent: Wednesday, July 10, 2002 4:12 AM
> >Subject: Bug with AUTO_INCREMENT
> >
> >
> >>Hi,
> >>
> >>Continuing my troubles with AUTO_INCREMENT (which nobody has yet
> >>responded to), I've now ruled the Perl DBI out of the equation and
> >>reproduced the same problem using the "mysql.exe" command-line tool.
> >>
> >>Hopefully somebody will be tempted to help this time now that there is
> >>no Perl involved to put people off?
> >>
> >>The bug can be reproduced as follows:
> >>
> >>Create the following simple database containing just one BDB table:
> >>
> >>    CREATE DATABASE test;
> >>
> >>    CREATE TABLE foo (
> >>       id INT NOT NULL AUTO_INCREMENT,
> >>       num INT,
> >>       str VARCHAR(10),
> >>       PRIMARY KEY (id)
> >>    ) TYPE=BDB;
> >>
> >>Now start two "mysql.exe" sessions running with the "-f" flag to ignore
> >>errors.
> >>
> >>Set each one into "no auto-commit" mode with:
> >>
> >>    SET AUTOCOMMIT=0;
> >>
> >>and then feed each of them the following two lines 50,000 times each:
> >>
> >>    INSERT INTO foo (num, str) VALUES (1, 'a');
> >>    COMMIT;
> >>
> >>On my NT4 machine I do this with the simple Perl program (I know I said
> >>Perl wasn't involved, but the Perl DBI still isn't):
> >>
> >>    sql.pl
> >>    ----------
> >>    print "SET AUTOCOMMIT=0;\n";
> >>    for (1 .. 50000) {
> >>        print "INSERT INTO foo (num, str) VALUES (1, 'a');\n";
> >>        print "COMMIT;\n";
> >>    }
> >>
> >>I pipe the output from this to the "mysql.exe" programs, and then
> >>re-direct STDERR from that to log files, e.g.:
> >>
> >>    Command Prompt One:
> >>    \perl5\bin\perl.exe sql.pl | \mysql\bin\mysql.exe -f -u root test 2>
> >>session1.txt
> >>
> >>    Command Prompt Two:
> >>    \perl5\bin\perl.exe sql.pl | \mysql\bin\mysql.exe -f -u root test 2>
> >>session2.txt
> >>
> >>When I inspect the output collected in these log files I find, not
> >>unexpectedly, that there are many "deadlock" errors (which I'm quite
> >>comfortable with, and can handle in my real software by simply retrying
> >>the transaction), but that there are also a few of the following error:
> >>
> >>    Duplicate entry '1' for key 1
> >>
> >>Surely this is a bug isn't it?
> >>
> >>The transaction that is being performed 50,000 times each by the two
> >>"mysql.exe" sessions doesn't specify any value for the AUTO_INCREMENT
> >>column "id" - it just leaves it up to the database to choose the "next"
> >>value.
> >>
> >>This error suggests that the database has wrongly chosen the value '1',
> >>and then (rightly) complains that it is already used!
> >>
> >>I would really appreciate a response on this one as I'm now at the end
> >>of my tether trying to work out what is wrong.
> >>
> >>Thanks in advance,
> >>
> >>Steve
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>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