首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当array为空时,Where IN()在Postgres中引发错误

问当array为空时,Where IN()在Postgres中引发错误
EN

Stack Overflow用户
提问于 2016-10-21 00:18:26
回答 1查看 519关注 0票数 0

这一行以前可以在SQlite中使用。但是现在我切换到了postgreSQL,如果数组是空的,它会引发一个异常。

代码语言:javascript
复制
InstagramMedia.where(instagram_account: [self.instagram_accounts.ids])

让PostgreSQL高兴的最有效的方式是什么?当self.instagram_accounts.ids为空时

谢谢

编辑错误为:

代码语言:javascript
复制
ActiveRecord::StatementInvalid - PG::SyntaxError: ERROR:  syntax error at or near ")"
LINE 1: ...media"  WHERE "instagram_media"."instagram_account_id" IN ()
                                                                      ^
: SELECT COUNT(*) FROM "instagram_media"  WHERE "instagram_media"."instagram_account_id" IN ():

并且只有在数组为空时才会发生。

EN

回答 1

Stack Overflow用户

发布于 2016-10-21 02:17:30

您使用的是什么版本的Rails和Postgres?

在#where中将空数组传递给应该不会引发错误:

代码语言:javascript
复制
(Rails 4.2.6 and Postgres 9.4)
>> User.where(id: [])
>> User Load (0.5ms)  SELECT "users".* FROM "users" WHERE  1=0
[]

看起来您的self.instagram_accounts.ids可能返回一个数组,这意味着您正在传递一个嵌套数组。该功能在4.2中已被弃用,但我认为在5.0中已被删除。这会是你的错误的来源吗?

WARN弃用警告:将嵌套数组传递给活动记录查找器方法已弃用,将被删除。在将数组用于“IN”条件之前,先展平数组。

如果不是这样,你能发布整个错误吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40159587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档