Sebbene @jsnplank abbia ragione sul fatto che i timestamp siano trattati in modo diverso e dovresti considerare di utilizzare il tipo di dati datetime per queste 2 colonne particolari, tuttavia, non riesce a spiegare il messaggio di errore.
Il messaggio di errore è molto probabilmente il risultato di una combinazione di come mysql tratta i campi timestamp quando non viene fornito alcun valore predefinito e le impostazioni della modalità sql.
-
Definisci entrambe le colonne timestamp come non nulle, senza alcun valore predefinito specifico impostato. Ciò significa che il valore predefinito della prima colonna timestamp sarà current_timestamp() e verrà aggiornato anche a current_timestamp() ogni volta che il record cambia. Questo è il motivo per cui il 1° campo timestamp non genera un messaggio di errore, indipendentemente da quale dei 2 sia il 1°.
Tuttavia, il valore predefinito della seconda colonna timestamp non nullo sarà '0000-00-00 00:00:00' se non si definisce esplicitamente un valore predefinito.
-
Probabilmente no_zero_date la modalità sql è abilitata anche sul tuo server in modo esplicito o come parte della modalità sql rigorosa. Questa modalità sql genera un errore se desideri impostare '0000-00-00 00:00:00' come valore predefinito o se desideri inserire questo valore in qualsiasi campo data.
Quindi, puoi utilizzare il tipo di dati timestamp nella tua tabella, ma rendere il secondo nullable o fornire 0 o qualsiasi data valida (come l'epoca) come valore predefinito esplicito.
Poiché stai contrassegnando le date di inizio e di fine con questi campi, potrebbe essere una buona idea utilizzare datetime anziché timestamp come tipo di dati.