我已将“零” 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
这是 MySQL 的规范,我们无能为力。
您应该只对 MySQL 使用有效的日期时间。
这是 MySQL 的规范,我们无能为力。
您应该只对 MySQL 使用有效的日期时间。
你好谢谢!
改用 TIMESTAMP 会起作用吗?
这不是 MySQL 用户论坛...
我对 MySQL 协议了解很多,但对 MySQL 的行为了解不多。
相关问题: https ://github.com/go-sql-driver/mysql/pull/346