Mysql: Ошибка: «Неверное значение даты и времени:« 0000-00-00 »для столбца ...» в mysql 5.7 и выше

Созданный на 22 дек. 2017  ·  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 рейтинги