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