mysql - Müssen es erlauben, '0000-00-00 00:00:00' Termine
Ich will null-Termine zu dürfen in MySQL. Habe ich das geändert sql_mode
zu ALLOW_INVALID_DATES,NO_ENGINE_SUBSTITUTION
.
Habe ich es geändert in /etc/mysql/my.cnf
.
Doch, ich, wenn ich versuche, Daten einzufügen bekomme ich die Fehlermeldung,
Abschneiden von Daten: Falsche datetime-Wert: '0000-00-00 00:00:00'
Die MySQL-version ist 5.7.18.
Irgendwelche Ideen auf, wäre dies eine große Hilfe.
Was für Daten waren, die Sie einfügen, wenn dieser Fehler passiert ist? Warum tun Sie müssen, um ungültige Datumsangaben?
Hast du den server neu starten?
Nun, ich denke, in
Ich bekomme die Daten aus SQL server und ich pass es an mysql. Der Eingang sieht so aus : '0000-00-00 00:00:00'. Dies ist nur ein back-up-system, und ich brauche, um die Daten in der Quell-system
Ich kann nicht speichern das Datum in varchar-wie kann ich nicht ändern Sie den Daten-Typ und ich bin nicht erlaubt, es zu tun. Und ja, ich habe mysql neu starten nach der änderung
Hast du den server neu starten?
Nun, ich denke, in
varchar
Feld. Also, warum Sie nicht verwenden varchar
? beim ausführen von select, update, delete, ..., können Sie konvertieren mit DATE()
wie SELECT id FROM my_table where DATE(my_date_1) > DATE(my_date_2) ORDER BY DATE(my_date_3) DESC
... Und... können Sie überprüfen, ob ein null-Datum wie WHERE my_date_1 = '0000-00-00 00:00:00'
Ich bekomme die Daten aus SQL server und ich pass es an mysql. Der Eingang sieht so aus : '0000-00-00 00:00:00'. Dies ist nur ein back-up-system, und ich brauche, um die Daten in der Quell-system
Ich kann nicht speichern das Datum in varchar-wie kann ich nicht ändern Sie den Daten-Typ und ich bin nicht erlaubt, es zu tun. Und ja, ich habe mysql neu starten nach der änderung
InformationsquelleAutor Rathi Rao | 2017-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht zu Lesen über die anderen mode-Einstellungen, wie streng und NO_ZERO_IN_DATE und NO_ZERO_DATE https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_date
InformationsquelleAutor Peter Gulutzan
Erlauben null-Datum (0000-00-00 00:00:00), müssen Sie entfernen Sie die Einschränkung.
Zu entfernen, insbesondere SQL-Modus (in diesem Fall NO_ZERO_DATE) finden Sie die aktuelle SQL-Modus:
kopieren Sie das Ergebnis und nehmen von ihm, was du nicht brauchst (NO_ZERO_DATE)
z.B.:
zu
erstellen und diese Datei öffnen:
und schreiben und zu Vergangenheit in dass es Ihrer neuen SQL-Modus:
neu starten MySQL:
InformationsquelleAutor Waqleh
Werde ich nehmen hier an, dass Sie ein gültiges Datum, so dass Ihre Fragen nie auf NULL prüfen.
Einen Weg, dies zu tun, ist zu verwenden, was ich nennen möchte "In alle Ewigkeit" Datum(en).
Diese sind im wesentlichen die min - /max-Daten zulässig für den DATETIME-Datentyp.
In meine verwendet, es wurden in der Regel "windows" von - bis " - Paare, aber Sie könnten es brauchen nur die minimale Datum.
Vom das Mysql-Handbuch:
Also eine Möglichkeit, die funktionieren könnte für Sie, ist die Verwendung von '1000-01-01 00:00:00', anstatt die null-Datum.
InformationsquelleAutor gview
Konnte ich dieses Problem durch die Verwendung zeroDateTimeBehavior=convertToNull
InformationsquelleAutor Rathi Rao
Sollte es gehen, ohne zu sagen, dass Sie tun es falsch. Sollte die Spalte null-Werte zulassen, wenn Sie beabsichtigen zu speichern, nichts, und Sie sollten nicht versuchen, legen Sie eine leere Zeichenfolge, wenn Sie sollten eine NULL.
Betrachten Sie diese, wenn:
Wenn der strict-Modus ist nicht in Kraft, MySQL fügt eingestellten Werte für ungültige oder fehlende Werte und erzeugt Warnungen.
Aber wenn der strikte Modus ist in der Tat...
Für transaktionale Tabellen, tritt ein Fehler für ungültige oder fehlende Werte in einem data-change-statement, wenn entweder STRICT_ALL_TABLES oder STRICT_TRANS_TABLES aktiviert ist. Die Anweisung wird abgebrochen und zurückgesetzt
http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sql-mode-strict
SELECT @@SQL_MODE; sollte zeigen, dass Sie ausgeführt werden, die mit (mindestens) STRICT_TRANS_TABLES. Während dies ist nicht der interne Standard in 5.6, es ist enthalten in der Standard-5.6 Konfigurations-Datei. Sie wollen, um es zu entfernen und starten Sie den server neu, wenn Sie möchten, das alte Verhalten.
...obwohl Sie berücksichtigen sollten, wodurch der code Verhalten mehr richtig.
Versuchen, dies zu ermöglichen
ALLOW_INVALID_DATES
http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_allow_invalid_dates
Hinweis: ich empfehle nicht, dies zu tun. Ich bin einfach zu beantworten, wie es zu tun. Meiner Meinung nach, ist es besser, zu bereinigen, die Abfragen und Daten, und bieten einen guten Standard für Spalten, die nicht null ist.
InformationsquelleAutor Prem Sarojanand