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

MySQL Ugyldig standardværdi for tidsstempel, når der ikke er angivet nogen standardværdi.

Selvom @jsnplank har ret i, at tidsstempler behandles forskelligt, og du bør overveje at bruge datetime datatype for disse 2 særlige kolonner, undlader han dog at forklare fejlmeddelelsen.

Fejlmeddelelsen er højst sandsynligt resultatet af en kombination af, hvordan mysql behandler tidsstempelfelter, når der ikke er angivet nogen standardværdi, og dine sql-tilstandsindstillinger.

  1. Du definerer begge tidsstempelkolonner som ikke null, uden nogen specifik standardværdi sat. Dette betyder, at den første tidsstempelkolonnes standardværdi vil være current_timestamp() og vil også blive opdateret til current_timestamp() hver gang posten ændres. Dette er grunden til, at feltet 1. tidsstempel ikke genererer en fejlmeddelelse, uanset hvilken af ​​de 2, der er den 1.

    Den anden ikke null-tidsstempelkolonnes standardværdi vil dog være '0000-00-00 00:00:00', hvis du ikke udtrykkeligt definerer en standardværdi.

    Se dette blogindlæg for flere detaljer .

  2. Sandsynligvis no_zero_date sql-tilstand er også aktiveret på din server enten eksplicit eller som en del af streng sql-tilstand. Denne sql-tilstand genererer en fejl, hvis du vil indstille '0000-00-00 00:00:00' som standardværdi eller gerne vil indsætte denne værdi i et datofelt.

Så du kan bruge tidsstemplet datatype i din tabel, men gør den anden enten nullbar eller angiv 0 eller en hvilken som helst gyldig dato (såsom epoken) som en eksplicit standardværdi.

Da du markerer start- og slutdatoer med disse felter, kan det være en god idé at udskifte datetime i stedet for tidsstempel som datatype.



  1. Brug FILEGROUP_NAME() til at returnere navnet på en filgruppe i SQL Server

  2. Mysql for at vælge månedsvis registrering, selvom data ikke eksisterer

  3. Sådan konverteres små bogstaver til store bogstaver i SQL Server - STORE ()

  4. Hvordan gemmer man uuid som nummer?