MySQL Server Incorrect integer value
Ich habe ein Integer Problem...
Ich momentan laufen meine PHP Scripte auf einem Linux Webspace, wir haben uns nun entschlossen auf einen Server umzusteigen.
Wir haben uns für einen Windows Server entschieden, ob das nun gut, schlecht, vor- oder unvorteilhaft ist sei dahingestellt!
Ich benutze den Microsoft Webserver IIS 7.5, den MySQL Server (Version: 5.1.44-community) und PHP 5.2.13
Jetzt zu meinem Problem, wenn ich ein Script aufrufe in dem ein Integer Wert nicht gegeben, also leer ist, dann sendet er mir verständlicherweise Incorrect integer value zurück.
Auf dem Linux Space wurde sowas aber einfach umgewandelt in den Wert 0 und somit wurden keine Fehler fabriziert, kann mir jemand von euch helfen das das auch so auf der Windows Maschine geht.
Den ganzen Code umscheiben das ist keine Lösung für mich und würde auch sehr lange dauern.
Liebe Grüße
Crimson
Ich momentan laufen meine PHP Scripte auf einem Linux Webspace, wir haben uns nun entschlossen auf einen Server umzusteigen.
Wir haben uns für einen Windows Server entschieden, ob das nun gut, schlecht, vor- oder unvorteilhaft ist sei dahingestellt!
Ich benutze den Microsoft Webserver IIS 7.5, den MySQL Server (Version: 5.1.44-community) und PHP 5.2.13
Jetzt zu meinem Problem, wenn ich ein Script aufrufe in dem ein Integer Wert nicht gegeben, also leer ist, dann sendet er mir verständlicherweise Incorrect integer value zurück.
Auf dem Linux Space wurde sowas aber einfach umgewandelt in den Wert 0 und somit wurden keine Fehler fabriziert, kann mir jemand von euch helfen das das auch so auf der Windows Maschine geht.
Den ganzen Code umscheiben das ist keine Lösung für mich und würde auch sehr lange dauern.
Liebe Grüße
Crimson
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138736
Url: https://administrator.de/contentid/138736
Ausgedruckt am: 15.11.2024 um 17:11 Uhr
10 Kommentare
Neuester Kommentar
Hi Crimson,
es wäre hilfreich wenn du die entsprechenden Zeilen noch posten würdest. Denn eigentlich sollte das Statement auf beiden Typen funktionieren bzw. ich entwickle auf Windows und Produktiv läuft die Seite auf Linux und noch nie Probleme gehabt - außer du benutzt spezielle Funktionen.
Grüße,
Dani
es wäre hilfreich wenn du die entsprechenden Zeilen noch posten würdest. Denn eigentlich sollte das Statement auf beiden Typen funktionieren bzw. ich entwickle auf Windows und Produktiv läuft die Seite auf Linux und noch nie Probleme gehabt - außer du benutzt spezielle Funktionen.
Grüße,
Dani
Moin Crimson,
Ich fasse nochmal zusammen:
Du gehst doch aber noch einen Schritt weiter: du versuchst doch ausdrücklich, dort einen Leerstring reinzudrücken
Das heißt, selbst wenn diese merkwürdige Syntax "INSERT INTO tabelle SET `feldA` = 'valueA',,feldB = 'valueB',...;", die ich noch nie gesehen habe, funktionieren würde: jedes nicht in total zerrütteten Verhältnissen aufgewachsene Datenbanksystem würde betreten zu Boden schauen, wenn du dann mit dem Ansinnen
Dann setzt doch dort einen numerisch-Nullwert ein.
Wenn dieser (erstere) Aufruf bisher keinen Fehler produziert hat, dann wurde dieser INSERT noch nie aufgerufen.
Poste doch mal wie von Dani angeregt die 3 laufenden Zentimeter Sourcecode, die dieses Statement zusammentrümmern.
Grüße
Biber
Zitat von @Crimson:
In dem Feld "tech_old_rank" ist kein Standart Wert hinterlegt und es ist nicht NULL, ich hab zwar schon zu Testzwecken
bei allen Feldern einen Standartwert hinterlegt, dennoch gibt es weiterhin massive Probleme im Programm.
In dem Feld "tech_old_rank" ist kein Standart Wert hinterlegt und es ist nicht NULL, ich hab zwar schon zu Testzwecken
bei allen Feldern einen Standartwert hinterlegt, dennoch gibt es weiterhin massive Probleme im Programm.
Ich fasse nochmal zusammen:
- das Feld "tech_old_rank" ist als INTEGER definiert
- das Feld "tech_old_rank" ist als NOT NULL definiert
- das Feld "tech_old_rank" hat keinen Default
Du gehst doch aber noch einen Schritt weiter: du versuchst doch ausdrücklich, dort einen Leerstring reinzudrücken
Das heißt, selbst wenn diese merkwürdige Syntax "INSERT INTO tabelle SET `feldA` = 'valueA',,feldB = 'valueB',...;", die ich noch nie gesehen habe, funktionieren würde: jedes nicht in total zerrütteten Verhältnissen aufgewachsene Datenbanksystem würde betreten zu Boden schauen, wenn du dann mit dem Ansinnen
...`tech_old_rank` = '', ...
...um die Ecke biegst. Also einen Stringwert in ein Integerfeld reinwürgen wolltest.Dann setzt doch dort einen numerisch-Nullwert ein.
...`tech_old_rank` = '0', ....
Wenn dieser (erstere) Aufruf bisher keinen Fehler produziert hat, dann wurde dieser INSERT noch nie aufgerufen.
Poste doch mal wie von Dani angeregt die 3 laufenden Zentimeter Sourcecode, die dieses Statement zusammentrümmern.
Grüße
Biber
In der Fehlermeldung steht doch aber deutlich erkennbar, dass diesem Feld ein Stringwert ('') zugewiesen werden soll.
Wieso wäre es deiner Meinung nach zu erwarten, dass es "In diesen beiden Systemen .... automatisch mit 0 gefüllt." wird?
Das hieße doch, du kannst hier und heute genau dieses INSERT-Statement auf den "alten" installationen abfeuern und bekommst ohne Fehler einen neuen Satz angelegt, der auch (numerisch Null) in diesem Feld enthält?
Glaub ich nicht.
Biber
Wieso wäre es deiner Meinung nach zu erwarten, dass es "In diesen beiden Systemen .... automatisch mit 0 gefüllt." wird?
Das hieße doch, du kannst hier und heute genau dieses INSERT-Statement auf den "alten" installationen abfeuern und bekommst ohne Fehler einen neuen Satz angelegt, der auch (numerisch Null) in diesem Feld enthält?
Glaub ich nicht.
Biber
Na gut.... wenn dieses Verhalten deinen Erwartungen entspricht, dann setze "global.sql_mode=TRADITIONAL;" oder "global.sql_mode='';".
vgl Der SQL-Modus des Servers (mySql 5.1) --> SET sql_mode = '';
Dennoch ist mir die Herleitung deiner Erwartungshaltung vollkommen suspekt - wenn mir eine neu installierte Server-Version zu Recht einen Fehler anmeckert, der in der alten Version jahrelang nicht aufgefallen ist, dann würde ich doch sagen: "Hey, wieso war die alte Version zu dämlich, das zu merken?"
vgl Der SQL-Modus des Servers (mySql 5.1) --> SET sql_mode = '';
Dennoch ist mir die Herleitung deiner Erwartungshaltung vollkommen suspekt - wenn mir eine neu installierte Server-Version zu Recht einen Fehler anmeckert, der in der alten Version jahrelang nicht aufgefallen ist, dann würde ich doch sagen: "Hey, wieso war die alte Version zu dämlich, das zu merken?"