Mysql: Erreur : "Valeur date/heure incorrecte : '0000-00-00' pour la colonne..." sur mysql 5.7 et versions ultérieures

Créé le 22 déc. 2017  ·  6Commentaires  ·  Source: go-sql-driver/mysql

Description du problème

J'ai inséré un objet time.Time "zéro" dans une table avec une colonne DATETIME et j'obtiens une erreur Incorrect datetime value: '0000-00-00' for column .

Exemple de code

Le code ci-dessous échoue :

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

Remplacer time.Time{} par time.Now() empêchera le code d'échouer.

Configuration

*Version du pilote (ou git SHA) : 9181e3a86a19bacd63e68d43ae8b7b36320d8092 (maître)
*Version Go : version go1.9 linux/amd64
*Version serveur : mysql 8.0.3, 5.7.20
*Système d'exploitation du serveur : Fedora 26

Tous les 6 commentaires

C'est la spécification de MySQL et il n'y a rien que nous puissions faire.
Vous ne devez utiliser qu'une date/heure valide avec MySQL.

C'est la spécification de MySQL et il n'y a rien que nous puissions faire.
Vous ne devez utiliser qu'une date/heure valide avec MySQL.

Salut merci!
Utiliser TIMESTAMP à la place fonctionnerait ?

Ceci n'est pas un forum d'utilisateurs MySQL...

Je connais bien le protocole MySQL, mais je ne connais pas grand-chose au comportement de MySQL.

Cette page vous a été utile?
0 / 5 - 0 notes