Für meinen Tisch admin_tool_functionality
Datetime-Feld Überlauf, wenn das Datum> '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)
);
Diese Insertion funktioniert:
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');
Aber jeder Wert lager als '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');
Geben Sie mir:
012.351 versagtCaused 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)
trotz der documentation sagen
der Bereich für
DATETIME
Werte ist'1000-01-01 00:00:00.000000'
zu'9999-12-31 23:59:59.999999'
Warum bin ich diesen Fehler?
Zeitzonen, vielleicht? Das scheint ein seltsamer Randfall zu sein ... – ceejayoz