MySQL-Fehler-Code: 1411. Falsche datetime-Wert: "für die Funktion str_to_date
Bin ich gebeten worden, um änderungen an einer bestehenden Anwendung, die zu dieser Zeit wird nur bereitgestellt, um ein Linux-Produktionsserver. Ich habe Voraus gegangen, und haben die app für den größten Teil der Arbeit auf meinem lokalen Windows-PC. Ich habe eine vollständige Kopie der MySQL
DB aus der Produktion installiert auf meinem lokalen PC. Die Produktions-DB ist MySQL v5.0.95
auf Linux und meine lokale DB ist MySQL v5.5
auf Windows. Beide sind in InnoDB-Modus.
Mein Problem ist, mit einer Anweisung wie der folgenden. Gemacht Generika für die Benutzerfreundlichkeit von anderen helfen zu wollen.
update atable
set adate=DATE_ADD(str_to_date('','%m/%d/%Y'), INTERVAL 0 DAY)
where anum='1'
In einigen Fällen wird eine leere Zeichenfolge übergeben wird, die in der Produktion nicht dazu führen, keine Probleme und erlaubt der Datensatz gespeichert werden/aktualisiert, aber vor Ort ist es wirft eine SQLException
. Also versuchte ich die SQL
- Anweisung direkt gegen meine lokale DB, und ich bekomme folgende Fehlermeldung in beiden Fällen.
Fehler-Code: 1411. Falsche datetime-Wert: "Funktion
str_to_date
Ist, habe ich mich an der Produktion my.cnf
und meine lokalen my.ini
Suche nach keine großen Unterschiede, und ich habe auch versucht, den sql-Modus "ALLOW_INVALID_DATES
" lokal, aber es änderte nichts an dem Ergebnis.
Ich weiß, dass ich könnte, ändern Sie den code nicht passieren in diesen leeren Saiten, aber es gibt viele Aussagen wie diese und in dieser Zeit habe ich nicht wollen, um änderungen zu machen, alle diese, wenn möglich. Dieser Kunde hat ein begrenztes budget und Zeitrahmen, und ich möchte, um den Fokus auf Ihre neuen Anforderungen. Ich bin auf der Suche nach input, wie kann ich meine lokalen Umgebung zu arbeiten, wie es in der Produktion, wenn möglich.
Vielen Dank für Ihre Zeit.
''
ist nicht ein gültiges Datum .. Wann soll Hinzugefügt werden? Das aktuelle Datum?Nein, es ist übergeben eine leere Zeichenfolge sowohl in lokalen und Produktion. Ich weiß, es ist seltsam, und ich bin mir nicht sicher, wie es funktioniert in der Produktion, sondern es ist.
InformationsquelleAutor ItBHarsH | 2013-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
SQLException
kommt nicht direkt von MySQL, ist es wahrscheinlich ausgelöst durch Ihre client-Sprache. MySQL wird nur eine Warnung generiert wird, können Sie normalerweise ignorieren. Wie auch immer, dieALLOW_INVALID_DATES
SQL-Modus sollte eigentlich den trick tun:Achtung:
Keine Warnung:
Edit: Wenn Sie auf der Suche nach einem Weg, um die Abfrage neu schreiben, Sie könnten versuchen, so etwas wie dieses:
Natürlich, dies erfordert, dass
adate
null-Werte zulässt.ACTION: update atable set adate=DATE_ADD(str_to_date('xxx','%m/%d/%Y'), INTERVAL 0 DAY) where anum='1' Message: Error Code: 1411. Incorrect datetime value: '' for function str_to_date
Dies geschieht mit oder ohneALLOW_INVALID_DATES
- Modus aktiviert, in meinem.ini.Also beides, dein code-und Workbench-Bericht Warnungen als Fehler. Nicht sicher, was Sie Antworten wollen—können Sie sich entspannen SQL-Modus zu vermeiden, die base-Warnung, oder Sie können die Abfrage ändern. Das ist im Grunde alles.
Wie erwähnt habe ich versucht ALLOW_INVALID_DATES-Modus und es hat nicht geholfen. Die Produktions-server keine Modi definiert. Ich habe auf der Suche in der SQL-Modi Dokumentation und nicht wissen, was die andere option zu versuchen. Vorschläge? --- BTW vielen Dank für all euren input!
Gibt es eine chance, dass Sie nicht bekommen, die syntax rechten oder lief Abfragen in verschiedenen Sitzungen?
Ich habe einen breakpoint in meinem code und ich mache ein copy/paste, also die syntax ist die gleiche.
InformationsquelleAutor Álvaro González