我有表格chart_data
:
CREATE TABLE `chart_data` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` ENUM('BID', 'ASK') NOT NULL,
`volume` FLOAT UNSIGNED NOT NULL,
`tokens` FLOAT UNSIGNED NOT NULL,
`create_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=LATIN1;
当我插入一些记录时发生错误。例如:
# OK:
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 02:05:01');
# Error (+1h):
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 03:05:01');
# Error:
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 03:59:59');
# OK:
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 04:05:01');
# OK (+1d):
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-04-26 03:05:01');
据我了解,该错误仅发生在 2017-03-26
的 3 am
。
错误堆栈跟踪:
Executing:
UPDATE `gdmv`.`chart_data` SET `create_at`='2017-03-26 03:05:01' WHERE `id`='3';
Operation failed: std::exception
ERROR 1292: 1292: Incorrect datetime value: '2017-03-26 03:05:01' for column 'create_at' at row 1
SQL Statement:
UPDATE `gdmv`.`chart_data` SET `create_at`='2017-03-26 03:05:01' WHERE `id`='3'
可能是什么问题?
我的环境:
mysql 版本 14.14 Distrib 5.7.15,适用于 Linux (x86_64)
PHP 5.6.26 (cli)(构建时间:2016 年 9 月 15 日 15:07:33)
Red Hat Enterprise Linux Server 5.11 版(Tikanga)
最佳答案
您尝试输入的格式是日期时间格式,因此您需要在 sql 模式中将时间戳更改为日期时间。
因此你需要改变你的表:
ALTER TABLE chart_data CHANGE create_at datetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP'
或者如果您更喜欢完整模式
CREATE TABLE `chart_data` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` ENUM('BID', 'ASK') NOT NULL,
`volume` FLOAT UNSIGNED NOT NULL,
`tokens` FLOAT UNSIGNED NOT NULL,
`create_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=LATIN1;
关于php - 日期时间值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44453880/