phpbar.de logo

Mailinglisten-Archive

[php] Daten wollen nicht in die Datenbank

[php] Daten wollen nicht in die Datenbank

Sebastian Mendel lists at sebastianmendel.de
Son Jun 29 12:25:05 CEST 2008


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