MySQL で CURRENT_TIMESTAMP を使用する方法

MySQL で CURRENT_TIMESTAMP を使用する方法

CURRENT_TIMESTAMPの使用

ご存知のとおり、MySQL の日付型では CURRENT_TIMESTAMP を使用してデフォルト値を指定できますが、これは MySQL のバージョンと日付の特定の型に関係しています。5.6 以降のバージョンでのみ、CURRENT_TIMESTAMP を DATETIME のデフォルト値として使用できます。

例えば:

ALTER TABLE t_user ADD update_time DATETIME DEFAULT CURRENT_TIMESTAMP

5.6より前のバージョンでは、CURRENT_TIMESTAMPをデフォルト値として使用すると、次のエラーが発生します。

[エラー] 1067 - 'update_time' のデフォルト値が無効です

MySQL 5.6.5 より前では、DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP は TIMESTAMP にのみ適用され、テーブル内の最大 1 つの TIMESTAMP フィールドでのみこの機能を使用できます。 MySQL 5.6.5 以降では、DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP は TIMESTAMP 列と DATETIME 列の両方に適用され、列の数に制限はありません。

CURRENT_TIMESTAMPを使用したタイムスタンプはエラーを報告します

プロジェクトに次のエラーがあります:

データベースの更新中にエラーが発生しました。

原因:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 列 'createTime' は null にできません

データモデルは次のとおりです。

  /* 作成時間は空にできません */
  createTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成時刻',
  /* 更新時間は空にできません */
  updateTime タイムスタンプ NOT NULL デフォルト CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',

一連のトラブルシューティングを行った結果、問題は MySQL データベースの異なるバージョンのグローバル変数「explicit_defaults_for_timestamp」によって発生していることが判明しました。

--explicit_defaults_for_timestamp のデフォルト値を表示します。SHOW GLOBAL VARIABLES LIKE "explicit_defaults_for_timestamp"; 

--explicit_defaults_for_timestamp のデフォルト値を変更します。SET @@global.explicit_defaults_for_timestamp=OFF;

パラメータ値が「ON」の場合:

ここに画像の説明を挿入

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL における TIMESTAMP の使用法の詳細な説明
  • 例によるMySql CURRENT_TIMESTAMP関数の分析
  • MySQL で複数のタイムスタンプを設定する方法の解釈
  • mysql データ型 TIMESTAMP

<<:  CSS3のvar()を使用して実行時にscss変数の値を変更する詳細な説明

>>:  Node+Express テストサーバーのパフォーマンス

推薦する

JS はシンプルな todoList (メモ帳) 効果を実装します

メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド...

Vuexの役割についての深い理解

目次概要コンポーネント間でデータを共有する方法Vuex の原則の紹介Vuexはコンポーネントのグロー...

HTML 特殊文字エンコーディング CSS3 コンテンツに関する簡単な説明:「私は特別なシンボルです」

プロジェクトで使用されている特殊文字とアイコンHTMLコードXML/HTML コードコンテンツをクリ...

nginx パニック問題の解決方法の詳細な説明

nginx パニック問題に関しては、まず nginx の起動プロセス中に、マスター プロセスが構成フ...

タグ li はブロックレベル要素ですか?

なぜ高さを設定できるのでしょうか。<h1 /> などの要素とは異なり、「セミインライン」...

JavaScript スロットリングとアンチシェイクに関する簡単な説明

目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...

クロスブラウザローカルストレージⅠ

原文: http://www.planabc.net/2008/08/05/userdata_beh...

Docker コンテナの正常なシャットダウン前にトラップを使用して環境のクリーンアップを実行する

実行中のコンテナが終了したときに、コンテナが完全に終了する前に環境をクリーンアップするなど、いくつか...

Linux で FastDFS ファイル サーバーを構築するための実装手順

目次1. ソフトウェアパッケージ2. gccをインストールする3. libfastcommonをイン...

MySQL 文字列連結と null 値の設定のためのインスタンス メソッド

#文字列連結 concat(s1,s2); テーブル内の last_name と first_nam...

デスクトップ仮想化を実現するために Hyper-V を展開する手順 (グラフィック チュートリアル)

Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...

Javascript 非同期プログラミング: Promise を本当に理解していますか?

目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...

type=fileファイル変更フォームの名前が正常にエコーされない問題を解決

easyui フレームワークのコードは次のとおりです。 css: .ファイルボックス{ フロート:...

Vueの子コンポーネントと親コンポーネントの詳細な分析

目次1. 親コンポーネントと子コンポーネント2. テンプレート分離書き込み1. テンプレートタグ2....

Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明

現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...