لقد قمت بإدراج عنصر 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()
إلى عدم فشل الرمز.
* إصدار برنامج التشغيل (أو بوابة SHA): 9181e3a86a19bacd63e68d43ae8b7b36320d8092 (رئيسي)
* إصدار Go: go version go1.9 linux / amd64
* إصدار الخادم: mysql 8.0.3، 5.7.20
* نظام تشغيل الخادم: فيدورا 26
إنها مواصفات MySQL ولا يوجد شيء يمكننا القيام به.
يجب أن تستخدم فقط تاريخًا ووقتًا صالحًا مع MySQL.
إنها مواصفات MySQL ولا يوجد شيء يمكننا القيام به.
يجب أن تستخدم فقط تاريخًا ووقتًا صالحًا مع MySQL.
مرحبا شكرا!
استخدام TIMESTAMP بدلاً من ذلك سيعمل؟
هذا ليس منتدى مستخدمي MySQL ...
أعرف الكثير عن بروتوكول MySQL ، لكني لا أعرف الكثير عن سلوك MySQL.
المشكلة ذات الصلة: https://github.com/go-sql-driver/mysql/pull/346