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

推薦する

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

Vue の基本入門: Vuex のインストールと使用

目次1. vuexとは何か2. インストールと導入3. vuexの使用4. プロセスの紹介5. 突然...

VMware 仮想マシンのインストール Apple Mac OS の超詳細なチュートリアル

目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...

vue ディレクティブ v-bind の使用と注意点

目次1. v-bind: 要素の属性にデータをバインドできる2. v-bind: は次のように省略で...

Ubuntu 18.04で国内ソースを変更する方法の例

Ubuntu はソースが中国からなのでダウンロード速度が比較的遅いです。CentOS と異なり、yu...

子要素の margin-top によって親要素が移動する問題の解決方法

問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...

Vue の DOM の非同期更新の簡単な分析

目次Vue が DOM を非同期更新する原理1 実際の DOM 要素を取得できるのはいつですか? 2...

ARGB、RGB、RGBAの違いと紹介

ARGB は、アルファ (透明度) チャネルが追加された RGB カラー モードであり、32 ビット...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

JavaScript のドキュメント オブジェクト モデル (DOM)

目次1. DOMとは何か2. 要素を選択する3. getElementById() 4. クエリセレ...

React Router 5.1.0 はページジャンプナビゲーションを実装するために useHistory を使用します

目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...

JS 実用的なオブジェクト指向スネークゲームの例

目次考える1. 貪欲な蛇の効果画像2. スネークの分析2.1 ゲーム開始機能2.2 運動機能2.2....

Centos7 で yum を使用して Ceph 分散ストレージをインストールするチュートリアル

目次序文yumソース、epelソースを設定するCephソースの設定Cephとそのコンポーネントをイン...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...