美文网首页
MySQL报错:Incorrect datetime value

MySQL报错:Incorrect datetime value

作者: 手心_d12a | 来源:发表于2020-03-29 17:34 被阅读0次

    今天进行网站测试,在导入数据库表时报错,错误提示如下:

    [ERR] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'uptime' ...

    大概意思就是:'0000-00-00 00:00:00'对于列 'uptime' 是不正确的 datetime 值...

    查了下表里的该字段的定义为: datetime DEFAULT NULL,即类型为 datetime ,默认值设置为  NULL,而在导入文件中插入语句的sql中该字段对应的正是 '0000-00-00 00:00:00',说明错误原因就是无法插入此值造成的。

    知道了出错的原因,那下面就是解决办法了,一种办法就是把所有'0000-00-00 00:00:00'都统一改成NULL即可,这个修改了再行导入即可,不再详细说明了。

    为了避免使用那么多的NULL(在有NULL的数据操作中确实更容易出问题),另一种解决方案就是让数据库能接受该形式的值。由于导入文件是从其他机器直接导出的,表明在其他机器上的表里保存的正是'0000-00-00 00:00:00'这个值,为什么其他机器上的数据库能保存为此值,而我的却不行呢?

    在查询了相关资料(就是百度了一下)后,这个问题跟模式设置(sql_mode)有关。

    打开一个查询窗口或在mysql命令行输入代码:

    SELECT @@sql_mode;

    执行后结果为:

    STRICT_ALL_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER

    上面的问题就是由于设置模式包含有 NO_ZERO_DATE和NO_ZERO_IN_DATE 造成的。

    具体每项设置的含义可以参考:https://www.cnblogs.com/fireporsche/p/8618691.html

    参考部分网页上说的,可以使用以下命令修改模式:

    set @@sql_mode = 'STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';

    此种修改方式为临时修改,在关闭后重新打开则作用失效。

    还有就是直接修改my.ini配置文件,找到sql_mode行,修改为如下重启mysql即可:

    sql_mode = 'STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'

    (04-10补)

    今天又碰到Navicat导入sql失败的问题,报错如下:

    [ERR] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'datetime(0) NULL DEFAULT NULL COMMENT '支付时间',  `curriculum_name` varchar(100) ' at line 20
    [ERR]

    这次虽然报错看着不同了,但其实错误原因跟上面所述还是一致的,都是由于字段设置类型为datetime(0)...导致的,所以就直接修改了mysql配置然后重启服务,重新导入,却依然导入失败。

    又试着修改成其他模式值,都不行(其实对这块的配置一直是不太明白),没办法只能换个思路来解决了。

    查看了错误提示,定位到sql代码大概是下面这句:

    `up_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间'

    后面需要insert的数据,此字段基本都是NULL或'0000-00-00 00:00:00',所以将字段类型直接修改成了int(11),其他不用调整,insert语句就统一修改成NULL,然后重试导入成功。

    相关文章

      网友评论

          本文标题:MySQL报错:Incorrect datetime value

          本文链接:https://www.haomeiwen.com/subject/tuduuhtx.html