MySQL が「operate_time」エラーのデフォルト値が無効であると報告する問題を解決する

MySQL が「operate_time」エラーのデフォルト値が無効であると報告する問題を解決する

データベースでcreate tableステートメントを実行する

テーブル `sys_acl` を作成します (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '認証ID',
 `code` varchar(20) NOT NULL DEFAULT '' COMMENT '認証コード',
 `name` varchar(20) NOT NULL DEFAULT '' COMMENT '認証名',
 `acl_module_id` int(11) NOT NULL DEFAULT '0' COMMENT '権限が配置されている認可モジュールID',
 `url` varchar(100) NOT NULL DEFAULT '' COMMENT '要求された URL、正規表現で入力できます',
 `type` int(11) NOT NULL DEFAULT '3' COMMENT 'タイプ、1: メニュー、2: ボタン、3: その他',
 `status` int(11) NOT NULL DEFAULT '1' COMMENT 'ステータス、1: 正常、0: 凍結',
 `seq` int(11) NOT NULL DEFAULT '0' COMMENT '現在のモジュールの権限の順序(小さいものから大きいものへ)',
 `remark` varchar(200) DEFAULT '' COMMENT '備考',
 `operator` varchar(20) NOT NULL DEFAULT '' COMMENT '演算子',
 `operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最終更新時間',
 `operate_ip` varchar(20) NOT NULL DEFAULT '' COMMENT '最終更新者のIPアドレス',
 主キー (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 デフォルト CHARSET=utf8;

「operate_time」のデフォルト値が無効であるというエラーを報告

情報を確認したところ、MySQL 5.6以降ではdatetime型がサポートされていることがわかったので、datetimeをtimestampに変更して無事解決しました。

datetime と timestamp の違いは特に大きくありません。主な違いは次のとおりです。

1. 両者の保管方法は異なる

TIMESTAMP の場合、クライアントによって挿入された時間を現在のタイムゾーンから UTC (協定世界時) に変換して保存します。クエリを実行すると、クライアントの現在のタイムゾーンに変換されて返されます。 DATETIME の場合は変更はなく、基本的にそのまま入力・出力されます。

2. 両者で保存できる時間範囲が異なる

タイムスタンプが保存できる時間の範囲は、「1970-01-01 00:00:01.000000」から「2038-01-19 03:14:07.999999」です。

datetime が保存できる時間の範囲は、「1000-01-01 00:00:00.000000」から「9999-12-31 23:59:59.999999」です。

要約:

TIMESTAMP と DATETIME の間には、保存範囲と保存方法を除いて大きな違いはありません。

もちろん、タイムゾーンをまたぐビジネスには TIMESTAMP の方が適しています。

参考リンク: MYSQL - データタイムとタイムスタンプの違い

補足: MySQL の「1067 - 'UPDATE_TIME' のデフォルト値が無効です」というエラー メッセージの解決方法

tmp_wrh_1 のフィールド UPDATE_TIME はタイムスタンプ型なので、デフォルト値は「0000-00-00 00:00:00」です。

今すぐ:

`UPDATE_TIME` タイムスタンプ NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新時間';

このテーブルを操作する場合、

のように:

alter table tmp_wrh_1 MODIFY列BUSINESS_TYPE varchar(5) comment 'hhr-service fee withdrawal'; -- 実行に失敗しました

エラーメッセージが表示されます: 1067 - 'UPDATE_TIME' のデフォルト値が無効です

問題分析:

タイムスタンプ型の値の範囲は1970-01-01 00:00:00から2037-12-31 23:59:59であるため、

したがって、UPDATE_TIME フィールドのデフォルト値を 1970-01-01 00:00:00 から 2037-12-31 23:59:59 までの値に変更する必要があります。

デフォルト値は 1970-01-01 10:00:00 以降にのみ正常に変更できることがわかりました。理由はわかりません。

問題は解決しました:

テーブル tmp_wrh_1 を変更し、列 update_time を変更し、デフォルトを削除します。
テーブル tmp_wrh_1 を変更し、列 UPDATE_TIME をデフォルト '1970-01-01 10:00:00' に設定します。
alter table tmp_wrh_1 MODIFY列BUSINESS_TYPE varchar(5) comment 'hhr-service fee withdrawal'; --実行成功

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • MySQL の一般的なエラー分析と解決策
  • MySQL システム エラー 1067 の解決策
  • JDBC を使用して Mysql 8.0.11 に接続するときに発生するさまざまなエラーを解決する方法

<<:  DIV+CSS命名規則の詳細な説明はSEO最適化に役立ちます

>>:  startup.bat をダブルクリックすると Tomcat がクラッシュする問題の解決方法の詳細な説明

推薦する

Docker に Zookeeper を素早くインストールする方法の詳細なチュートリアル

Docker で Zookeeper を素早くインストール会社を変わってから長らくZookeeper...

Spark SQL の 4 つの一般的なデータ ソースの詳細な説明

汎用ロード/書き込みメソッドオプションを手動で指定するSpark SQL の DataFrame イ...

Windows 上で Zookeeper サーバーを構築するチュートリアル

インストールと設定Apacheの公式ウェブサイトには多くのミラーダウンロードアドレスが用意されており...

MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い

1. テーブルAのデータを使用してMySQLのテーブルBの内容を更新するたとえば、データ テーブル内...

MySQL で左結合を使用して where 条件を追加する問題の詳細な分析

現在の需要:グループとファクターの 2 つのテーブルがあります。1 つのグループは複数のファクターに...

素晴らしいCSS属性MASKの詳しい説明

この記事では、CSS の非常に興味深い属性マスクを紹介します。名前が示すように、マスクはマスクと翻訳...

MySQL データベースのインデックスとトランザクション

目次1. 索引1.1 コンセプト1.2 機能1.3 索引作成の原則1.3.1 ディスクアクセス回数を...

MySQL 8.0.22 zip圧縮パッケージ版(無料インストール)のダウンロード、インストール、および構成手順の詳細

目次最初のステップはMySQLをダウンロードすることですステップ2: ダウンロードした圧縮パッケージ...

Vue3 でマークダウン エディター コンポーネントを使用する方法

目次インストールコンポーネントのインポート基本的な使い方保存したマークダウンまたは HTML テキス...

Baidu百科事典UIの開発動向について議論する

<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...

js のループメソッドとさまざまなトラバーサルメソッド

目次forループwhileループdo-while ループループのネストトラバーサルメソッド~のために...

計算機機能を実現するjsバージョン

この記事の例では、計算機機能を実装するためのjsの具体的なコードを参考までに共有しています。具体的な...

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...

MySQLのMVCCマルチバージョン同時実行制御の実装

1 MVCCとは何かMVCC の正式名称は、マルチバージョン同時実行制御です。データベースへの同時ア...

Linuxディレクトリ構造の詳細な紹介

Linuxを学び始めるときは、まずLinuxの標準ディレクトリ構造を理解する必要があります。 / r...