MySQL Datetime插入问题。奇怪的错误?

时间:2015-10-07 10:46:32

标签: mysql datetime sql-insert

我在将记录插入MySQL 5.6.15版时遇到问题。问题是日期时间。

Table Setup 第一条记录插入没有问题。 第二个抱怨约会。

INSERT INTO fish_db.fish_tank_temperature VALUES(NULL,'2015-10-04 14:00:27',30);
INSERT INTO fish_db.fish_tank_temperature VALUES(NULL,'2015-10-04 02:00:27',20.5);
**Error Code: 1292. Incorrect datetime value: '2015-10-04 02:00:27' for column 'time_value' at row 1**


select @@sql_mode
**'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'**

下面的架构创建脚本可用于您可能尝试的任何测试。

这是一个非常简单的架构和表,有3列。 自动递增主键,time_value和温度读数

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

DROP SCHEMA IF EXISTS `fish_db` ;
CREATE SCHEMA IF NOT EXISTS `fish_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `fish_db` ;

-- -----------------------------------------------------
-- Table `fish_db`.`fish_tank_temperature`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `fish_db`.`fish_tank_temperature` ;

CREATE TABLE IF NOT EXISTS `fish_db`.`fish_tank_temperature` (
  `idfish_tank_temperature` INT NOT NULL AUTO_INCREMENT,
  `time_value` TIMESTAMP NOT NULL,
  `temperature` DOUBLE NOT NULL,
  PRIMARY KEY (`idfish_tank_temperature`),
  UNIQUE INDEX `idfish_tank_temperature_UNIQUE` (`idfish_tank_temperature` ASC),
  INDEX `fish_tank_temperature_idx1` (`time_value` ASC, `temperature` ASC))
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

如果可以,请帮忙。

1 个答案:

答案 0 :(得分:3)

您遇到的问题是,根据您的位置(悉尼是我在您的个人资料中看到的),您的系统可能配置为自动夏令时:10月4日凌晨2点是凌晨3点,所以2015-10-04 02:00:27是无效的日期时间。

也许您应该将服务器配置为使用UTC。