Bekijk Volledige Versie : Probleem met een AUTO_INCREMENT veld in MySQL
Bas Hendriks
05/06/03, 10:35
Hallo,
We hebben in MySQL een tabel een veld ID die als AUTO_INCREMENT gedefineerd
is(int veld),
als we (voor een wissel) een ID op -1 zetten dan wordt de AUTO_INCREMENT
value de Max int value(2147483647), waardoor er geen items meer toe te
voegen zijn.
Melding: ERROR 1062: Duplicate entry '2147483647' for key 1
Waarom telt mysql niet gewoon verder vanaf het met auto_increment laatste
uitgegeven ID?
Kan ik de auto_increment teller handmatig resetten? (Niet met ALTER TABLE
test AUTO_INCREMENT=20;
e.d. want dat is puur het startpunt)
--
Met vriendelijke groet,
Bas Hendriks
Bas Hendriks schreef:
> als we (voor een wissel) een ID op -1 zetten dan wordt de
> AUTO_INCREMENT value de Max int value(2147483647)
>
> Waarom telt mysql niet gewoon verder vanaf het met
> auto_increment laatste uitgegeven ID?
Misschien omdat MySQL geen negatieve waarde wil in het auto
increment veld?
--
Alain
spamsux.nl
Bas Hendriks
05/06/03, 11:05
> Bas Hendriks schreef:
>
> > als we (voor een wissel) een ID op -1 zetten dan wordt de
> > AUTO_INCREMENT value de Max int value(2147483647)
> >
> > Waarom telt mysql niet gewoon verder vanaf het met
> > auto_increment laatste uitgegeven ID?
>
> Misschien omdat MySQL geen negatieve waarde wil in het auto
> increment veld?
>
Dit kan volgens mij wel(is gewoon een signed integer, dus -2147483648 tot
2147483647 moet kunnen):
#> tabel voor bewerking
mysql> select * from test;
+----+-------+
| no | titel |
+----+-------+
| 1 | test1 |
| 2 | test2 |
| 20 | test3 |
| 6 | test7 |
| 5 | test5 |
+----+-------+
5 rows in set (0.00 sec)
#> 1 id -1 maken
mysql> UPDATE test SET no="-1" where no=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from test;
+----+-------+
| no | titel |
+----+-------+
| 1 | test1 |
| -1 | test2 |
| 20 | test3 |
| 6 | test7 |
| 5 | test5 |
+----+-------+
5 rows in set (0.00 sec)
mysql> desc test;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| no | int(16) | | PRI | NULL | auto_increment |
| titel | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
#> nieuwe item toevoegen, dit kan 1 keer, nu wordt maxval voor id gebruikt
mysql> INSERT INTO test VALUES("","test8");
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+------------+-------+
| no | titel |
+------------+-------+
| 1 | test1 |
| -1 | test2 |
| 20 | test3 |
| 6 | test7 |
| 5 | test5 |
| 2147483647 | test8 |
+------------+-------+
6 rows in set (0.00 sec)
#> waarna je niet meer kan toevoegen
mysql> INSERT INTO test VALUES("","test9");
ERROR 1062: Duplicate entry '2147483647' for key 1
mysql>
(Dit doet zich ook voor als -1 weer teruggezet wordt of verwijderd wordt)
Ik vond wel deze posting:
http://www.geocrawler.com/mail/msg.php3?msg_id=4586681&list=8
Dit lijkt wel hetzelfde probleem, maar kan er verder niet veel mee (geen
myisam meer gebruiken)
Bas Hendriks schreef:
>> Misschien omdat MySQL geen negatieve waarde wil in het
>> auto increment veld?
>>
>
> Dit kan volgens mij wel(is gewoon een signed integer, dus
> -2147483648 tot 2147483647 moet kunnen):
Het veld kan misschien wel een -1 aan, maar mysql kan die
waarsch niet auto incrementen enzo?
--
Alain
spamsux.nl
Igmar Palsenberg
05/06/03, 15:50
Bas Hendriks wrote:
> We hebben in MySQL een tabel een veld ID die als AUTO_INCREMENT gedefineerd
> is(int veld),
> als we (voor een wissel) een ID op -1 zetten dan wordt de AUTO_INCREMENT
> value de Max int value(2147483647), waardoor er geen items meer toe te
> voegen zijn.
> Melding: ERROR 1062: Duplicate entry '2147483647' for key 1
Welke versie van MySQL gebruik je ? Dit is een bug die volgens mij
allang is opgelost.
Igmar
Bas Hendriks
06/06/03, 10:35
> Bas Hendriks wrote:
>
> > We hebben in MySQL een tabel een veld ID die als AUTO_INCREMENT
gedefineerd
> > is(int veld),
> > als we (voor een wissel) een ID op -1 zetten dan wordt de AUTO_INCREMENT
> > value de Max int value(2147483647), waardoor er geen items meer toe te
> > voegen zijn.
> > Melding: ERROR 1062: Duplicate entry '2147483647' for key 1
>
> Welke versie van MySQL gebruik je ? Dit is een bug die volgens mij
> allang is opgelost.
>
Klopt!
Ik had het online gevonden, simpele upgrade zou het moeten verhelpen.
Bedankt folks!
B