Als ik in een tabel iets wil inserten, moet ik bij het opgeven van de ID, altijd een getal opgeven.
Terwijl auto increment 'aan' staat.
Ik mag er dan dus van uitgaan, dat MySQL lekker zelf de nieuwe ID bepaald, voor het nieuwe record.
Dit is echter niet het geval. Ook als ik de volgende query uitvoer, zie ik dat de last insterted id gewoon 0 is en 0 blijft...
Ook als ik auto_increment=x toevoeg aan het einde van de query, werkt de auto increment niet...
Als ik via PHPMyAdmin iets in wil vullen en het ID veld leeg laat, ontstaat de volgende foutmelding (die dus eigenlijk niet zou moeten):
Heb overigens ook hier al gezocht, kwam toen verscheidene topics tegen. In eentje kwam ik toen een suggestie tegen, waardoor ik er dus achter kwam, dat LAST_INSERT_ID() 0 is, terwijl er dus wél iets in de DB te vinden is.
Overigens ontstaat de foutmelding ook, als de tabel nog leeg is...
Kan wel met een omweg natuurlijk de geinserte ID berekenen, die dan weer met 1 optellen en die dan weer als ID invullen in de nieuwe record, maar lijkt mij dat het sneller is, als ik het aan MySQL zelf overlaat?
Wat ik overigens ook raar vind... Als ik bijvoorbeeld een tinyint heb op een veld, en een getal in vul die lager is dan de maximaal toegestane lengte, slikt ie dat ook niet, bijvoorbeeld bij de gate...
* CH4OS zou haast denken dat MySQL over de zeik is of zo...
Terwijl auto increment 'aan' staat.
Ik mag er dan dus van uitgaan, dat MySQL lekker zelf de nieuwe ID bepaald, voor het nieuwe record.
Dit is echter niet het geval. Ook als ik de volgende query uitvoer, zie ik dat de last insterted id gewoon 0 is en 0 blijft...
SQL:
Het lijkt er dus op, dat die auto_Increment niet werkt... En ik snap niet wat er nou fout is aan de tabel, die overigens gemaakt is volgens de volgende SQL-code1
| SELECT LAST_INSERT_ID() from `users`; |
SQL:
Zou het kunnen komen door de engine en de gebruikte charset? Want MySQL / PHPMyAdmin maakt standaard steeds een InnoDB aan als engine en ik geloof als charset UTF-8... 1
2
3
4
5
6
7
8
9
10
11
12
| CREATE TABLE `users` ( `id` tinyint(10) unsigned NOT NULL auto_increment, `smf_id` tinyint(10) unsigned NOT NULL, `nick` varchar(50) NOT NULL, `hexnick` varchar(50) NOT NULL, `ip` varchar(15) NOT NULL, `gate` int(11) NOT NULL, `gender` varchar(2) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `nick` (`nick`), UNIQUE KEY `hexnick` (`hexnick`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
Ook als ik auto_increment=x toevoeg aan het einde van de query, werkt de auto increment niet...
Als ik via PHPMyAdmin iets in wil vullen en het ID veld leeg laat, ontstaat de volgende foutmelding (die dus eigenlijk niet zou moeten):
Word er wél een waarde ingevult, dan werkt het wel?#1366 - Incorrect integer value: '' for column 'id' at row 1
Heb overigens ook hier al gezocht, kwam toen verscheidene topics tegen. In eentje kwam ik toen een suggestie tegen, waardoor ik er dus achter kwam, dat LAST_INSERT_ID() 0 is, terwijl er dus wél iets in de DB te vinden is.
Overigens ontstaat de foutmelding ook, als de tabel nog leeg is...
Kan wel met een omweg natuurlijk de geinserte ID berekenen, die dan weer met 1 optellen en die dan weer als ID invullen in de nieuwe record, maar lijkt mij dat het sneller is, als ik het aan MySQL zelf overlaat?
Wat ik overigens ook raar vind... Als ik bijvoorbeeld een tinyint heb op een veld, en een getal in vul die lager is dan de maximaal toegestane lengte, slikt ie dat ook niet, bijvoorbeeld bij de gate...
* CH4OS zou haast denken dat MySQL over de zeik is of zo...
[ Voor 31% gewijzigd door CH4OS op 30-07-2006 15:07 ]