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

推薦する

Vue.js の watch メソッドと computed メソッドの違いの詳細な例

目次序文導入1. 作用機序2. 自然から3. 時計と計算の比較4. メソッドはデータロジックの関係を...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 1

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

Dockerコンテナイメージからコードを復元する手順

コードが失われ、コンテナ内で実行されているイメージから必要なコードを回復する必要がある場合があります...

MySQL 8.0 の統計が不正確である理由

序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...

MySQL で重複行を見つけて削除する方法

目次1. 重複行を見つける方法2. 重複行を削除する方法3. 複数の列で重複を見つける方法4. クエ...

CentOS7にPHP7 Redis拡張機能をインストールする方法

導入前回の記事では、Redis をインストールして設定しましたが、まだ終わりではありません。PHP ...

React Contextの理解と応用についてお話ししましょう

目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...

tomcat8の最新のLinuxインストールプロセス

ダウンロード参考:ダウンロードするコアパッケージを選択してくださいダウンロード後、ファイルをサーバー...

Vueはel-tree遅延読み込みを使用して、追加、削除、変更、クエリ機能を実装します。

Vue のツリー表示については、プロジェクトが使用されています: エフェクト ダイアグラムがツリー...

MySQL における「:=」と「=」の違いの簡単な分析

=設定および更新の場合にのみ、:= と同じ効果、つまり代入効果があり、それ以外の場合は等号の効果があ...

Linux の Makefile とは何ですか? どのように機能しますか?

この便利なツールでプログラムをより効率的に実行およびコンパイルしますMakefile は自動コンパイ...

Vue で lodop 印刷コントロールを使用してブラウザ互換の印刷を実現する方法

序文このコントロールを直接印刷すると下部に透かしが入りますが、公式 Web サイトから購入することで...

Taobao の商品画像切り替え効果を実現する JavaScript

JavaScriptの服装アルバム切り替え効果(Taobao商品画像切り替えに似ています)、参考ま...

Windows10のマウスを模倣して境界線を光らせる効果を実現するCSSの詳細解説

最新の Windows 10 アップデートをインストールした後、システム UI の詳細な効果が顕著に...

mysql8でルートユーザーのパスワードをリセットする手順を完了します

序文最近、多くの新しい同僚がこの質問をしてきました。特に、homebrew を通じて自動的にインスト...