「ゼロ」のtime.TimeオブジェクトをDATETIME列のあるテーブルに挿入しましたが、 Incorrect datetime value: '0000-00-00' for column
エラーが発生します。
以下のコードは失敗します:
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)
}
}
time.Time{}
をtime.Now()
に置き換えると、コードが失敗しなくなります。
*ドライバーバージョン(またはgit SHA):9181e3a86a19bacd63e68d43ae8b7b36320d8092(マスター)
* Goバージョン:Goバージョンgo1.9 linux / amd64
*サーバーバージョン:mysql 8.0.3、5.7.20
*サーバーOS:fedora 26
これはMySQLの仕様であり、私たちにできることは何もありません。
MySQLでは有効な日時のみを使用する必要があります。
これはMySQLの仕様であり、私たちにできることは何もありません。
MySQLでは有効な日時のみを使用する必要があります。
ありがとね!
代わりにTIMESTAMPを使用すると機能しますか?
これはMySQLユーザーフォーラムではありません...
MySQLプロトコルについてはよく知っていますが、MySQLの動作についてはよくわかりません。
関連する問題: https ://github.com/go-sql-driver/mysql/pull/346