がadmin_tool_functionality
日時フィールドのオーバーフローかの日> '9999-12-31 23:59:59.4' 私のテーブルのために
CREATE TABLE admin_tool_functionality (
id BIGINT NOT NULL AUTO_INCREMENT,
admin_tool_functionality_type_id BIGINT NOT NULL,
CONSTRAINT fk__admin_tool_functionality__admin_tool_functionality_type
FOREIGN KEY (admin_tool_functionality_type_id)
REFERENCES admin_tool_functionality_type(id),
PRIMARY KEY (id, admin_tool_functionality_type_id),
price FLOAT NOT NULL,
valid_from_day DATETIME NOT NULL,
valid_until_day DATETIME NOT NULL,
CHECK(valid_from_day < valid_until_day)
);
この挿入は正常に動作します:
INSERT INTO admin_tool_functionality
(admin_tool_functionality_type_id, price, valid_from_day, valid_until_day)
VALUES
(1, 13.37, '2016-01-01', '9999-12-31 23:59:59.4');
しかし'9999-12-31 23:59:59.4'
をより任意の値ラガー失敗している:
INSERT INTO admin_tool_functionality
(admin_tool_functionality_type_id, price, valid_from_day, valid_until_day)
VALUES
(1, 13.37, '2016-01-01', '9999-12-31 23:59:59.5');
は私を与える:
をDATETIME
値に対する
範囲を言ってdocumentationにもかかわらず
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Datetime function: datetime field overflow at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3964) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2503) at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:839) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:739)
は
'1000-01-01 00:00:00.000000'
なぜ私はこのエラーを取得しています'9999-12-31 23:59:59.999999'
にありますか?
タイムゾーン、おそらく?これは奇妙なケースのように思えます... – ceejayoz