Mysql: 错误:“不正确的日期时间值:'0000-00-00' for column...”在 mysql 5.7 及更高版本上

创建于 2017-12-22  ·  6评论  ·  资料来源: go-sql-driver/mysql

问题描述

我已将“零” time.Time 对象插入到具有 DATETIME 列的表中,并得到Incorrect datetime value: '0000-00-00' for column错误。

示例代码

以下代码失败:

package main

import (
    "database/sql"
    "log"
    "time"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, _ := sql.Open("mysql", "root:secret@(127.0.0.1:3306)/test")
    _, err := db.Exec("CREATE TABLE IF NOT EXISTS daty (col DATETIME)")
    if err != nil {
        log.Panicf("Failed create: %s", err)
    }
    _, err = db.Exec("INSERT INTO daty (col) VALUES (?)", time.Time{})
    if err != nil {
        log.Panicf("Failed insert: %s", err)
    }
}

time.Time{}替换为time.Now()将导致代码不会失败。

配置

*驱动程序版本(或 git SHA):9181e3a86a19bacd63e68d43ae8b7b36320d8092(主)
*Go 版本:go 版本 go1.9 linux/amd64
*服务器版本:mysql 8.0.3、5.7.20
*服务器操作系统:fedora 26

所有6条评论

这是 MySQL 的规范,我们无能为力。
您应该只对 MySQL 使用有效的日期时间。

这是 MySQL 的规范,我们无能为力。
您应该只对 MySQL 使用有效的日期时间。

你好谢谢!
改用 TIMESTAMP 会起作用吗?

这不是 MySQL 用户论坛...

我对 MySQL 协议了解很多,但对 MySQL 的行为了解不多。

相关问题: https ://github.com/go-sql-driver/mysql/pull/346

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mayurshivakumar picture mayurshivakumar  ·  5评论

AlekSi picture AlekSi  ·  4评论

tbdingqi picture tbdingqi  ·  7评论

lunemec picture lunemec  ·  7评论

julienschmidt picture julienschmidt  ·  7评论