24

既存のデータベースでは、年齢列 (INT) があります。ここで、それを dob (DATETIME) として設定する必要があります。

answer with 138 upvotes で定義されているように、デフォルト値として CURRENT_TIMESTAMP を指定して、PHPMyAdmin を使用してこれを試みます。ただし、PHPMyAdmin は#1067 - invalid default value for 'dob'添付のスクリーンショットのように不平を言っています。

エラーのスクリーンショット

なぜそのエラーが発生するのか、それを修正する方法を誰かが提案できますか?

4

5 に答える 5

27

DATETIME で CURRENT_TIMESTAMP をデフォルト値として設定することはできません。

しかし、TIMESTAMP でそれを行うことができます。

ここで違いを参照してください。

このブログの言葉

データ型指定の DEFAULT 値句は、列のデフォルト値を示します。1 つの例外を除いて、デフォルト値は定数でなければなりません。関数または式にすることはできません。

これは、たとえば、日付列のデフォルトを NOW() や CURRENT_DATE などの関数の値に設定できないことを意味します。

例外は、CURRENT_TIMESTAMP を TIMESTAMP 列のデフォルトとして指定できることです。

于 2012-10-25T08:04:48.143 に答える
3

私はあなたがmysqlの日付でそれを達成できるとは思わない. タイムスタンプを使用するか、このアプローチを試す必要があります..

CREATE TRIGGER table_OnInsert BEFORE INSERT ON `DB`.`table`
FOR EACH ROW SET NEW.dateColumn = IFNULL(NEW.dateColumn, NOW());
于 2012-10-25T08:26:31.030 に答える
2

デフォルト値current_timeが type に対して無効であるため、そのエラーが発生していますDATETIME。それはそれが言っていることであり、それが起こっていることです。

使用できる唯一のフィールドcurrent_timeはタイムスタンプです。

于 2012-10-25T08:02:27.683 に答える