Mysql: Erro: "Valor de data e hora incorreto: '0000-00-00' para coluna..." no mysql 5.7 e superior

Criado em 22 dez. 2017  ·  6Comentários  ·  Fonte: go-sql-driver/mysql

Descrição do problema

Eu inseri um objeto time.Time "zero" em uma tabela com uma coluna DATETIME e recebo o erro Incorrect datetime value: '0000-00-00' for column .

Código de exemplo

O código abaixo falha:

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)
    }
}

Substituir time.Time{} por time.Now() fará com que o código não falhe.

Configuração

*Versão do driver (ou git SHA): 9181e3a86a19bacd63e68d43ae8b7b36320d8092 (mestre)
*Versão Go: versão go1.9 linux/amd64
*Versão do servidor: mysql 8.0.3, 5.7.20
*SO do servidor: fedora 26

Todos 6 comentários

É a especificação do MySQL e não há nada que possamos.
Você deve usar apenas data e hora válidas com o MySQL.

É a especificação do MySQL e não há nada que possamos.
Você deve usar apenas data e hora válidas com o MySQL.

Olá, obrigado!
Usar TIMESTAMP funcionaria?

Este não é o fórum de usuários do MySQL ...

Eu sei muito sobre o protocolo MySQL, mas não sei muito sobre o comportamento do MySQL.

Esta página foi útil?
0 / 5 - 0 avaliações