结构体内有time.Time类型的成员,xorm框架的update会报错,这是为什么

weixin_38066147 2019-09-20 10:20:53
### 遇到个问题,结构体内有time.Time类型的成员,xorm框架的update会报错 err :Params type error
**例如 结构体**
```
type Userinfo struct {
Userid string `xorm:"not null pk VARCHAR(100)"`
Username string `xorm:"not null VARCHAR(255)"`
Createtime time.Time `xorm:"TIMESTAMP(6)"`
Modifiedtime time.Time `xorm:"TIMESTAMP(6)"`
}
```
**然后初始化其Userid和Username,不初始化是时间**
```
u := Userinfo{
Userid : "11111",
Username : "tom",
}
```
**然后输出这个 u **
```
log.Println(u)
结果如下:
2019/07/04 21:38:33 {11111 tom 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
```
**然后用xorm的update方法,则报错了
```
_,err = db.Engine.Id(u.Userid).Update(&u)
if err != nil {
log.Println(err)
}
结果err信息如下:
2019/07/04 21:39:42 Params type error
```
**对于字段值为false或0或空值的更新,不知道xorm会不会更新,我本意是不想更新时间的。而且用update还报错了,除非用
Exec方法,但如果字段很多的时候,那如果因为1个是time.Time类型的字段而导致用不了update方法,要自己写sql的话,这就
非常的长了。社区大神有什么好的方法吗?
**
**
顺带说下,insert方法是没问题的。
**
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38098649 2019-09-20
  • 打赏
  • 举报
回复
**找到原因了。** ``` func (u *Userinfo)ModifyUserinfo() (err error) { _,err = db.Engine.Id(u.Userid).Update(&u) //这里应该直接用u而不是用&u,本身已经是指针 ```
weixin_38112495 2019-09-20
  • 打赏
  • 举报
回复
** update本身会对false,0和空值进行过滤而不更新的。 ** [xorm update的用法](https://www.kancloud.cn/kancloud/xorm-manual-zh-cn/56025)

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧