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 >----- 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 >> > > > -- Klein bottle for rent - enquire within. --------------------------------------------------------------------- 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