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
.
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.
*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
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.
Problème connexe : https://github.com/go-sql-driver/mysql/pull/346