偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何使用 sqlx 插入给定的时间戳》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容此问题特定于 github.com/jmoiron/sqlx
。
我想使用命名查询插入已知的时间戳或日期。我怎么做?我使用 time.now()
作为给定时间戳的示例。
这是我在 mysql 中的表:
create table book (
id int(11) not null,
name varchar(50) default null,
ts timestamp null default null,
primary key (id)
) engine=innodb
package main
import (
_ "database/sql"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
"log"
"time"
"fmt"
)
type book struct {
id int
name string
ts time.time
}
func main() {
db, err := sqlx.open("mysql", "xxx:xxxxx@tcp(127.0.0.1:3306)/dbname?parsetime=true&charset=utf8")
if err != nil {
log.println(err)
}
defer db.close()
v := book{id: 1, name: "book", ts: time.now() }
fmt.println(v)
stmt, err := db.preparenamed(`insert into book values (:id, :name, :ts)`)
_, err = stmt.exec(v)
}
这是我遇到的错误:
{1 Book 2019-08-06 09:21:15.178503955 +0000 UTC m=+0.000601133}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x604ec6]
goroutine 1 [running]:
github.com/jmoiron/sqlx.(*NamedStmt).Exec(0x0, 0x65c980, 0xc00010a060, 0xc00010a060, 0x0, 0x6cfaa0, 0xc000112020)
/root/go/src/github.com/jmoiron/sqlx/named.go:43 +0x26
main.main()
/root/go/src/dbtest/sqlx_insert.go:37 +0x284
exit status 2
解决方案
抱歉!时间戳列名称实际上是由自动化脚本更改的。虚惊!一切都很完美。感谢大家!
今天关于《如何使用 sqlx 插入给定的时间戳》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注编程网公众号!