MySQL 5.6.6 版本起,TIMESTAMP 列的隱式默認行為被廢棄,啟動時會報警告。本文通過實測截圖詳細對比 5.6.6 前後的行為差異。
NOT NULL,插入 NULL 存當前時間戳。DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。'0000-00-00 00:00:00'。

在 my.cnf 添加 explicit_defaults_for_timestamp=true 重啟後:
NOT NULL 時允許 NULL,無自動填充。DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。
NOT NULL 但無默認值:嚴格模式報錯,非嚴格模式存零時間並警告(同 DATETIME)。
explicit_defaults_for_timestamp 關閉了「詭異」隱式默認,強制開發者顯式聲明意圖,提升代碼可維護性。