错误代码 1292 不正确的日期值 mysql
错误代码 1292 不正确的日期值 mysql
我有一张表\n
CREATE TABLE IF NOT EXISTS `PROGETTO`.`ALBERGO` ( `ID` INT(11) NOT NULL COMMENT '酒店的唯一标识', `nome` VARCHAR(45) NULL COMMENT '酒店名称', `viale` VARCHAR(45) NULL COMMENT '所在大街', `num_civico` VARCHAR(5) NULL COMMENT '门牌号', `data_apertura` DATE NULL COMMENT '开业日期(季节开始)', `data_chiusura` DATE NULL COMMENT '关闭日期(季节结束)', `orario_apertura` TIME NULL COMMENT '开门时间', `orario_chiusura` TIME NULL COMMENT '关门时间', `posti_liberi` INT(11) NULL COMMENT '空房数量', `costo_intero` FLOAT NULL COMMENT '全价价格', `costo_ridotto` FLOAT NULL COMMENT '折扣价格', `stelle` INT(11) NULL COMMENT '星级分类', `telefono` VARCHAR(15) NULL COMMENT '电话号码', `mail` VARCHAR(100) NULL COMMENT '电子邮件', `web` VARCHAR(100) NULL COMMENT '网站', 'Nome-paese` VARCHAR(45) NOT NULL COMMENT '酒店所在国家的唯一标识', `Comune` CHAR(2) NOT NULL COMMENT '酒店所在城市的唯一标识', PRIMARY KEY (`ID`), INDEX `Nome-paese` (`Nome-paese` ASC), INDEX `Comune` (`Comune` ASC), CONSTRAINT `Nome-paese` FOREIGN KEY (`Nome-paese`) REFERENCES `PROGETTO`.`PAESE` (`Nome-paese`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `Comune` FOREIGN KEY (`Comune`) REFERENCES `PROGETTO`.`PAESE` (`Comune`) ON DELETE NO ACTION ON UPDATE CASCADE) ENGINE = InnoDB
\n当我尝试运行这个查询时:\n
INSERT INTO `PROGETTO`.`ALBERGO`(`ID`, `nome`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `posti_liberi`, `costo_intero`, `costo_ridotto`, `stelle`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES(0, 'Hotel Centrale', 'Via Passo Rolle', '74', '01-05-2012', '31-09-2012', '06:30', '24:00', 80, 50, 25, 3, '43968083', 'info@hcentrale.it', 'http://www.hcentrale.it/', 'Trento', 'TN')
\n*错误代码:1292. 对于列\'data_apertura\',日期值不正确:\'01-05-2012\'*\n我应该做什么更改?(我尝试将日期格式从gg/mm/yyyy更改为gg-mm-yyyy,但没有任何变化)
错误代码 1292 是 MySQL 中的一个常见错误,表示日期值不正确。在上述代码中,出现了这个错误是因为在插入数据时,日期 '2012-09-31' 的值不正确。根据日期格式 yyyy-MM-dd
,每个月的日期范围应该是 1-31,而9月只有30天,因此日期 '2012-09-31' 是无效的。
要解决这个问题,需要将日期 '2012-09-31' 修改为有效的日期,比如 '2012-09-30'。修改后的代码如下:
INSERT INTO `PROGETTO`.`ALBERGO`(`ID`, `nome`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `posti_liberi`, `costo_intero`, `costo_ridotto`, `stelle`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES(0, 'Hotel Centrale', 'Via Passo Rolle', '74', '2012-05-01', '2012-09-30', '06:30', '24:00', 80, 50, 25, 3, '43968083', 'info.it', 'http://www.hcentrale.it/', 'Trento', 'TN')
通过将日期修改为有效的值,就可以避免错误代码 1292 的出现。
在MySQL 5.7中,不允许使用0000-00-00 00:00:00这样的日期值。
如果你想要允许这样的日期值,你需要更新你的my.cnf文件,步骤如下:
1. 打开终端并输入sudo nano /etc/mysql/my.cnf
2. 找到[mysqld]
这一行,在其后面添加以下内容:sql_mode="NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
3. 重启MySQL服务,输入sudo service mysql restart
4. 完成!
对于Windows系统,需要修改的是my.ini文件。
感谢你帮了我很多忙,特别是当我在使用新配置的旧代码时。
我不得不将这一行添加到/etc/mysql/mysql.conf.d/mysqld.cnf
文件中,所以输入sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
进行编辑。