首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.6 explicit_defaults_for_timestamp 參數詳解

     編輯:MySQL 綜合教學

MySQL 5.6 explicit_defaults_for_timestamp 參數詳解

安裝 MySQL 5.6 時出現警告:

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option...

歷史行為(5.6.6 前)

  • TIMESTAMP 未聲明 NULL 默認 NOT NULL,插入 NULL 存當前時間戳。
  • 第一個 TIMESTAMP 列自動獲 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。
  • 第二個 TIMESTAMP 列默認 '0000-00-00 00:00:00'。

參數作用

在 my.cnf [mysqld] 節點添加:

explicit_defaults_for_timestamp=true

重啟後警告消失,行為標準化:

  • TIMESTAMP 未聲明 NOT NULL 允許 NULL,無自動填充。
  • 不再自動分配 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。
  • 聲明 NOT NULL 無默認值:嚴格模式報錯,非嚴格模式存零時間並警告(同 DATETIME)。

參數含義

explicit_defaults_for_timestamp = 「顯式指定 TIMESTAMP 列的默認值」。關閉隱式魔法行為,強制開發者在建表時明確聲明意圖,避免升級兼容性陷阱。

建議

所有 5.6+ 生產環境建議開啟此參數,並在建表時顯式定義時間戳列行為:

CREATE TABLE t (
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved