首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.6 安裝警告「TIMESTAMP implicit DEFAULT」解決:explicit_defaults_for_timestamp 參數詳解

     編輯:MySQL 資料庫相關知識

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

四、開啟後的行為變化

  • TIMESTAMP 無 NOT NULL 可存 NULL
  • 無隱式 DEFAULT CURRENT_TIMESTAMP/ON UPDATE CURRENT_TIMESTAMP
  • NOT 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;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved