sql >> Database teknologi >  >> RDS >> Mysql

Forkert datetime-værdi Databasefejlnummer:1292

Jeg opdagede efter opgradering til MySQL 5.7, at denne fejl begyndte at opstå i tilfældige situationer, selv når jeg ikke opgav en dato i forespørgslen.

Dette ser ud til at være fordi forrige versioner af MySQL-understøttede datoer som 0000-00-00 00:00:00 (som standard) 5.7.4 introducerede dog nogle ændringer til NO_ZERO_DATE indstilling. Hvis du stadig har gamle data til stede, når du bruger en nyere MySQL-version, kan der dukke tilfældige fejl op.

Jeg var nødt til at udføre en forespørgsel som denne for at nulstille alle nuldatoer til en anden dato.

# If the columns supports NULL, use that
UPDATE table SET date_column = NULL WHERE date_column < '1000-01-01';

# Otherwise supply another default date
UPDATE table SET date_column = '1970-01-01' WHERE date_column < '1000-01-01';

Alternativt kan du muligvis justere NO_ZERO_DATE indstilling, men bemærk hvad dokumenterne siger om det:



  1. Generer GUID i MySQL for eksisterende data?

  2. Oprettelse af en PostgreSQL-sekvens til et felt (som ikke er id'et for posten)

  3. Kan ikke caste objekt af typen 'System.DBNull' til typen 'System.Byte[]'.

  4. Udelukker ikke-understøttede tabeller, der skal optages af Oracle Streams