MySQL 5.6 安裝/啟動出現 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option。本文解釋警告成因、參數含義與解決方案。
MySQL 5.6.6 起棄用 TIMESTAMP 隱式預設值行為 (5.5 時代特有),預設參數 explicit_defaults_for_timestamp=OFF 維持兼容但產生警告。
explicit_defaults_for_timestamp = ON|OFF # ON = 顯式指定 TIMESTAMP 預設值 (標準 SQL 行為) # OFF = 保留隱式預設值 (兼容 5.5,產生警告)
# /etc/my.cnf 或 /etc/mysql/my.cnf [mysqld] explicit_defaults_for_timestamp = true
重啟 MySQL:service mysql restart 警告消失。
mysqld --explicit_defaults_for_timestamp=1
NOT NULL 可存 NULLDEFAULT CURRENT_TIMESTAMP/ON UPDATE CURRENT_TIMESTAMPNOT NULL 無預設值時:嚴格模式報錯,非嚴格存零值+警告DEFAULT CURRENT_TIMESTAMP 欄位CREATE TABLE events ( id INT PRIMARY KEY AUTO_INCREMENT, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, expired_at TIMESTAMP NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;