Mysql: Error: "Valor de fecha y hora incorrecto: '0000-00-00' para la columna..." en mysql 5.7 y superior

Creado en 22 dic. 2017  ·  6Comentarios  ·  Fuente: go-sql-driver/mysql

Descripcion del problema

He insertado un objeto time.Time "cero" en una tabla con una columna DATETIME y obtengo un error Incorrect datetime value: '0000-00-00' for column .

Código de ejemplo

El siguiente código falla:

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

Reemplazar time.Time{} con time.Now() hará que el código no falle.

Configuración

*Versión del controlador (o git SHA): 9181e3a86a19bacd63e68d43ae8b7b36320d8092 (maestro)
* Ir a la versión: ir a la versión go1.9 linux/amd64
*Versión del servidor: mysql 8.0.3, 5.7.20
*Sistema operativo del servidor: fedora 26

Todos 6 comentarios

Es la especificación de MySQL y no hay nada que podamos.
Debe usar solo una fecha y hora válida con MySQL.

Es la especificación de MySQL y no hay nada que podamos.
Debe usar solo una fecha y hora válida con MySQL.

¡Hola Gracias!
¿Usar TIMESTAMP en su lugar funcionaría?

Este no es un foro de usuarios de MySQL...

Sé mucho sobre el protocolo MySQL, pero no sé mucho sobre el comportamiento de MySQL.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

tbdingqi picture tbdingqi  ·  7Comentarios

zhaohui-kevin picture zhaohui-kevin  ·  5Comentarios

mayurshivakumar picture mayurshivakumar  ·  5Comentarios

pmoosman picture pmoosman  ·  9Comentarios

victormongi picture victormongi  ·  4Comentarios