Mailinglisten-Archive |
Jörn Grube schrieb: > Christian Knorr schrieb: >> Am Samstag 28 Juni 2008 22:06:12 schrieb Daniel Lüdeking: >>> 2147483647 ist der maximale Wert für den Datentyp Integer. >>> Die Lösung ist deshalb - wie schon erwähnt - das Heranziehen einer >>> weitaus kleineren ID. Ich empfehle nochmals 1 bis n via auto_increment. > ... >> Ist am Code was falsch? >> >> { >> $sql = "INSERT INTO prefix_value (value_id,value_entry,...n) >> VALUES ('0','$_POST[entry]',...n)"; >> } > ... > > auto_increment kann nicht 0 (Null) sein. Man kann die DB zwar zwingen > auch einen Wert 0 zu akzeptieren, allerdings sagt das "auto" von > auto_increment ja mehr oder weniger schon aus, dass der passende Wert > von der DB selbst gesetzt wird. nicht wenn man den Wert vorgibt, und 0 kann man da ebenfalls vorgeben, hängt aber von der Server-Konfiguration ab NO_AUTO_VALUE_ON_ZERO > Und in einer Antwort wurde bereits > erwähnt, dass Du statt '0' einfach '' benutzen solltest. Ich schreib das > hier nur zu Deinem besseren Verständnis :) '' wäre ein leerer String, einen String in ein numerisches Feld einzutragen ist ein Fehler, welcher von MySQL automatisch korrigiert wird, aber nicht in allen SQL_MODEs, kann also WARNINGS oder sogar ERRORS erzeugen wenn er den auto_increment Wert verwenden will muss er entweder NULL als Wert angeben oder besser das Feld überhaupt nicht angeben. Wahrscheinlich ist einfach sein next autoincrement value bereits zu hoch, das sieht er aber wenn er ein SHOW CREATE TABLE macht alleine den Wert mittels ALTER TABLE tbl AUTO_INCREMENT = 0; wieder zurückzusetzen hilft aber nicht, da dieser beim nächsten mal automatisch wieder auf den momentan höchsten Wert in der PK-Spalte + 1 gesetzt wird d. h. er muss erst seine Werte in der PK Spalte korrigieren (eventuell einfach löschen) dann am besten das FELD auf UNSIGNED BIGINT AUTO_INCREMENT und nen PK da drauf ändern -- Sebastian Mendel
php::bar PHP Wiki - Listenarchive