gpt4 book ai didi

go - time.Now() golang 的 mysql 时间戳错误

转载 作者:IT王子 更新时间:2023-10-29 01:09:03 25 4
gpt4 key购买 nike

如何在mysql表中保存time.Now(),列名为created_at timestamp null

我收到错误:

Error:Error 1292: Incorrect datetime value: '2017-08-05 19:06:14.190 +0000' for column 'created_at' at row 1

所要求的更多信息:-(我正在使用 fragmenta cms,因此下面给出了所有引用代码及其行号)

表架构:-

mysql> describe users;
+----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
| status | int(11) | YES | | NULL | |
| role | int(11) | YES | | NULL | |
| name | varchar(250) | YES | | NULL | |
| email | varchar(250) | YES | | NULL | |
| title | varchar(250) | YES | | NULL | |
| summary | text | YES | | NULL | |
| text | text | YES | | NULL | |
| image_id | int(11) | YES | | NULL | |
| password_hash | varchar(250) | YES | | NULL | |
| password_reset_token | text | YES | | NULL | |
| password_reset_at | timestamp | YES | | NULL | |
+----------------------+--------------+------+-----+---------+----------------+

运行它以保存的代码:-

在行号。 62 这里 ( https://github.com/fragmenta/fragmenta-cms/blob/master/src/pages/actions/setup.go#L62 )

调用代码
用户 := users.New()

在行号51 在这里的文件 (https://github.com/fragmenta/fragmenta-cms/blob/master/src/users/query.go#L51)

New() 函数已设置。

这就像:-

func New() *User {
user := &User{}
user.CreatedAt = time.Now()
user.UpdatedAt = time.Now()
user.TableName = TableName
user.KeyName = KeyName
user.Status = status.Draft
return user
}

他们的连接/mysql 打开模式位于此处 (https://github.com/fragmenta/query/blob/master/adapters/database_mysql.go#L23)。

最佳答案

https://github.com/fragmenta/query 中存在错误. query/adapters/database.go 中的 TimeString 方法对所有 DBMS 适配器都无效。

// TimeString - given a time, return the standard string representation
func (db *Adapter) TimeString(t time.Time) string {
return t.Format("2006-01-02 15:04:05.000 -0700")
}

它对 MySQL 时间戳无效:MySQL 5.7 Reference Manual, 11.3.1 The DATE, DATETIME, and TIMESTAMP Types . query/adapters/database_mysql.go 中的 MySQL TimeString 方法应该是:

// TimeString - given a time, return the MySQL standard string representation
func (db *MysqlAdapter) TimeString(t time.Time) string {
return t.Format("2006-01-02 15:04:05.999999")
}

关于go - time.Now() golang 的 mysql 时间戳错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com