rubyonrails where子句找不到正确的记录

cygmwpex  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(309)

我有一个rails模型,设置如下:
poi编号:

id : int
name : varchar
subtype : int

我最近使用mysql\u dump和import将很多记录从一个数据库迁移到另一个数据库。迁移似乎进行得很顺利,如果我在控制台中查询一个id,它会发现这些记录。有这样一个记录:

id : 33
name : testpoi
subtype : 172

如果我试图用以下方法找到它:

Poi.where(:subtype => 172).first

它总是返回零
如果我在迁移数据库的系统上运行这个精确的查询,它就可以工作了。
如果我跑了 Poi.find(33) 它也找到了。我试过了

Poi.where(:subtype => "172").first

以及确保它不是一个数据类型不匹配,但没有用。
另外,如果我将此对象添加到集合中

@otherobject.poilist << Poi.find(33) #=> which has a has many with foreign key subtype

它工作得很好(保存后返回true),但如果随后重新启动生产控制台,则关联将不再存在,即使子类型id与包含对象的id匹配。

zengzsys

zengzsys1#

谢谢你们的回复。结果发现,由于一些奇怪的迁移,subtype字段实际上是一个字符串。这里真正的奇迹是,在某些情况下,它确实起了作用,因为它不应该起作用。结案了!

相关问题