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
.
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.
*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
É 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.
Problema relacionado: https://github.com/go-sql-driver/mysql/pull/346