Mysql: خطأ: "قيمة التاريخ والوقت غير صحيحة: '0000-00-00' للعمود ..." في mysql 5.7 والإصدارات الأحدث

تم إنشاؤها على ٢٢ ديسمبر ٢٠١٧  ·  6تعليقات  ·  مصدر: go-sql-driver/mysql

وصف المشكلة

لقد قمت بإدراج عنصر 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

ال 6 كومينتر

إنها مواصفات MySQL ولا يوجد شيء يمكننا القيام به.
يجب أن تستخدم فقط تاريخًا ووقتًا صالحًا مع MySQL.

إنها مواصفات MySQL ولا يوجد شيء يمكننا القيام به.
يجب أن تستخدم فقط تاريخًا ووقتًا صالحًا مع MySQL.

مرحبا شكرا!
استخدام TIMESTAMP بدلاً من ذلك سيعمل؟

هذا ليس منتدى مستخدمي MySQL ...

أعرف الكثير عن بروتوكول MySQL ، لكني لا أعرف الكثير عن سلوك MySQL.

المشكلة ذات الصلة: https://github.com/go-sql-driver/mysql/pull/346

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات