8

mysqlの日付のデフォルト値(タイムスタンプではない)として日付を設定したいのですが、次のエラーが表示されます

ALTER TABLE `RMS`.`transactionentry` 
CHANGE `Date` `Date` DATE DEFAULT NOW() NOT NULL

エラー

Invalid default value for 'Date'

同じケース

alter table `RMS`.`transactionentry` 
change `Date` `Date` date default 'CURRENT_DATE' NOT NULL
4

5 に答える 5

14
alter table `RMS`.`transactionentry`
change `Date` `Date` date default current_timestamp NOT NULL

更新しました:

mysqlでそれを達成できるとは思いませんdate。このアプローチを使用timestampまたは試す必要があります。

CREATE TRIGGER transactionentry_OnInsert BEFORE INSERT ON `RMS`.`transactionentry`
    FOR EACH ROW SET NEW.dateColumn = IFNULL(NEW.dateColumn, NOW());
于 2012-07-20T05:56:03.843 に答える
10

データ型指定のDEFAULTvalue句は、列のデフォルト値を示します。1つの例外を除いて、デフォルト値は定数でなければなりません。関数や式にすることはできません。これは、たとえば、日付列のデフォルトをNOW()やCURRENT_DATEなどの関数の値に設定できないことを意味します。例外は、TIMESTAMP列のデフォルトとしてCURRENT_TIMESTAMPを指定できることです。

詳細については、dev.mysql.comを参照してください

于 2012-07-20T05:56:20.477 に答える
1

MYSQLバージョン自体に問題がある可能性があることを忘れないでください。5.6ではデフォルト値なしのタイムスタンプが許可され、nullとして設定する必要はありませんが、5.7ではデフォルトを明示的に設定する必要があります。

于 2018-01-23T21:20:05.520 に答える
0

MySQLサイトによると:

データ型指定のDEFAULTvalue句は、列のデフォルト値を示します。1つの例外を除いて、デフォルト値は定数でなければなりません。関数や式にすることはできません。これは、たとえば、日付列のデフォルトをNOW()やCURRENT_DATEなどの関数の値に設定できないことを意味します。例外は、TIMESTAMP列のデフォルトとしてCURRENT_TIMESTAMPを指定できることです。

それで:

alter table `RMS`.`transactionentry` 

change `Date` `Date` date default CURRENT_TIMESTAMP NOT NULL

動作するはずです。あなたの問題は、引用符で囲んで文字列にしていることでした。

于 2012-07-20T05:55:36.133 に答える
0

次のコマンドで列定義を変更できます。

ALTER TABLE transactionentry MODIFY COLUMN `Date` date null;

nullが機能することを許可します。

于 2018-12-27T03:53:47.103 に答える