Ich habe ein "null" time.Time-Objekt in eine Tabelle mit einer DATETIME-Spalte eingefügt und erhalte den Fehler Incorrect datetime value: '0000-00-00' for column
.
Der folgende Code schlägt fehl:
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)
}
}
Das Ersetzen time.Time{}
durch time.Now()
führt dazu, dass der Code nicht fehlschlägt.
*Treiberversion (oder git SHA): 9181e3a86a19bacd63e68d43ae8b7b36320d8092 (Master)
*Go-Version: Go-Version go1.9 Linux/Amd64
*Serverversion: mysql 8.0.3, 5.7.20
*Server-Betriebssystem: Fedora 26
Es ist die Spezifikation von MySQL und es gibt nichts, was wir können.
Sie sollten nur gültige Datetime mit MySQL verwenden.
Es ist die Spezifikation von MySQL und es gibt nichts, was wir können.
Sie sollten nur gültige Datetime mit MySQL verwenden.
Hallo danke!
Die Verwendung von TIMESTAMP würde stattdessen funktionieren?
Dies ist kein MySQL-Benutzerforum ...
Ich weiß viel über das MySQL-Protokoll, aber ich weiß nicht viel über das Verhalten von MySQL.
Verwandtes Problem: https://github.com/go-sql-driver/mysql/pull/346