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 テストサーバーのパフォーマンス

推薦する

MySQL 結合テーブルクエリの基本操作 左結合のよくある落とし穴

概要中小規模のプロジェクトでは、特にレポートを作成するときに、結合テーブル クエリが非常に一般的な操...

Docker の MySQL 時間とシステム時間の不一致の問題を解決する

最近、Docker に MySQL をインストールしたところ、データベースの時刻がシステム時刻と 8...

フロントエンドページのポップアップマスクはページのスクロールを禁止します

フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...

jsを呼び出すいくつかの方法が整理され、使用が推奨されています

a タグではクリック イベントがよく使用されます。 1. href="javascript...

Linux での vi (vim) の新しい使い方のまとめ

私は数年間 vi エディタを使ってきましたが、実用的な用途で使ったことはありませんでした。今日 Py...

VMware 仮想マシンで Linux の IP アドレスを表示する方法

1. まず、コンピュータのデスクトップにある VMware アイコンをダブルクリックしてソフトウェア...

Linux での MySQL 8.0.25 のインストールと設定のチュートリアル

LinuxにMySQL 8.0.25をインストールするための最新のチュートリアルを参考にしてください...

要素 DateTimePicker+vue ポップアップボックスに時間のみが表示される問題を解決する

3つの知識ポイント: 1. CSS子孫セレクターhttps://www.w3school.com.c...

あなたを救うために、私のテーブルは何を使えばいいでしょうか (Haiyu Blog)

テーブルはかつて、Web ページの開発、つまりレイアウトにおいて非常に重要な役割を果たしていました。...

Linuxでテキスト比較を実現するコツを教えます

序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...

1つのコマンドで、シェルの読み取りコマンドの共通パラメータを理解できます。

Shell で受信パラメータを受信する方法は 2 つあることがわかっています。 1 つはスクリプト...

JavaScript の setTimeout() の使用法の概要

目次1. はじめに2. setIntervalとsetTimeoutの違い3.タイムアウトを設定する...

MySQLの主キーと外部キーの使用と説明を簡単に説明します

目次1. 外部キー制約外部キーとは何ですか?外部キーを使用する条件:外部キーの定義構文は次のとおりで...

ウォーターフォールレイアウト+ダイナミックレンダリングの実装

目次典型的なウォーターフォールウェブサイトウォーターフォールフローレイアウトの原則一般的な考え方具体...

子ども向けウェブサイトの視覚構造レイアウト設計手法の分析

1. 温かくて優しい関連アドレス: http://www.web-designers.cn/post...