Golang Go语言中 Gorm where 不起作用?

发布于 1周前 作者 nodeper 来自 Go语言

Golang Go语言中 Gorm where 不起作用?

用的 https://github.com/go-gorm/gorm 同样的 Sql 语句,在数据库里面能查出来记录,在代码里面就不行,如图

https://imgchr.com/i/Usda1H https://imgchr.com/i/UsdU9e


更多关于Golang Go语言中 Gorm where 不起作用?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

18 回复

为什么前面注释掉的都有=之类的最后一个没注释的反倒没有

更多关于Golang Go语言中 Gorm where 不起作用?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你把 where 去掉可用查?把结构体定义也贴下。

query.where(“end_date=?”,“balabala”)

e 没注意你的下面那个,忽略上面👆

带不带等号都是一样的,看 debug 输出的 sql 语句就知道了

把那个 where 去掉就可以查出来

看下数据库的日志,两个操作是否相同

v1 版的 gorm 每次操作都会 clone 一个新对象, 你需要调用 where 之后赋值给当前对象 query = query.where()

抱歉各位,两个数据库数据差不多,是我连错数据库了[苦笑脸]

谢谢提醒,是我连错数据库了

在Golang中使用Gorm时,如果遇到where子句不起作用的情况,通常可能是由于以下几个原因:

  1. 查询条件错误:首先确认传递给where的参数是否正确。确保字段名和值是预期的,并且符合数据库中的实际数据。

  2. 链式调用问题:Gorm支持链式调用,但如果在链式调用中顺序不正确或中间某个方法返回了错误而未被处理,可能会导致后续操作无效。检查每个方法调用后的错误返回值。

  3. 数据类型不匹配:确保查询条件中的数据类型与数据库字段类型一致。例如,如果数据库字段是整数类型,而查询条件是字符串类型,则不会匹配到任何记录。

  4. 事务影响:如果查询是在事务中进行的,确保事务没有因为之前的错误而被回滚,导致查询未能正确执行。

  5. 缓存问题:在某些开发环境中,数据库查询结果可能被缓存。尝试清除缓存或重启开发服务器。

  6. 数据库连接问题:检查数据库连接是否正常,包括连接字符串、用户名、密码等配置是否正确。

  7. 版本兼容性:确认你使用的Gorm版本与你的Go版本和数据库驱动版本兼容。

解决这些问题通常需要从代码和配置两方面进行排查。如果问题依旧存在,建议查看Gorm的官方文档或搜索类似问题的解决方案,也可以考虑在Stack Overflow等社区提问,获取更具体的帮助。

回到顶部