当前位置: 首页 > 面试题库 >

SQLite到Postgres(Heroku)GROUP BY

颛孙和颂
2023-03-14
问题内容

下列SQLite代码按session_id将消息分组:

@messages=Message.where("messages.sender_id = (?) OR messages.recipient_id = (?)"
          , current_user.id, current_user.id).group("messages.conversation_id")

在迁移到Heroku时,Postgres无法识别此代码。查看日志,告诉我将所有Message列添加到GROUP BY-使我进入此功能代码:

@messages=Message.where("messages.sender_id = (?) OR messages.recipient_id = (?)"
          , current_user.id, current_user.id).group("messages.conversation_id
          , messages.updated_at, messages.id, messages.sender_id
          , messages.recipient_id, messages.sender_deleted
          , messages.recipient_deleted, messages.body, messages.read_at
          , messages.ancestry, messages.ancestry_depth, messages.created_at")

仅此代码无法正确地按session_id分组。它仅输出满足WHERE条件的所有消息。有任何想法吗?


问题答案:

我使用以下方法得出了一个功能解决方案DISTINCT ON

@messages = Message.select("DISTINCT ON (messages.conversation_id) * ")
                   .where("messages.sender_id = (?) OR messages.recipient_id = (?)", current_user.id, current_user.id)
                   .group("messages.conversation_id, messages.updated_at, messages.id, messages.sender_id, messages.recipient_id, messages.sender_deleted, messages.recipient_deleted, messages.body, messages.read_at, messages.ancestry, messages.ancestry_depth, messages.created_at")

但是,这在SQLite中不起作用。建议下载Postgres并直接使用它,而不必在开发中使用SQLite代码,而在生产环境(Heroku)中使用Postgres代码。



 类似资料:
  • 我无法连接到heroku数据库,当我将我的应用程序部署到heroku时,我在日志中得到了以下内容: [localhost-startStop-1]警告org.springframework.web.context.support.annotationConfigWebApplicationContext-上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans

  • 我试图连接到银行,但它给出了这个错误,当我尝试: 应用程序无法启动 描述: 未能配置数据源:无法配置嵌入式数据源。 原因:未能确定合适的驱动程序级别 行动: 考虑下面的内容:如果你想要一个嵌入式数据库(H2,HSQL或DeBy),请把它放在类路径上。如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有激活的配置文件)。 我的应用程序属性: 我的pom:

  • 已更新 无法连接到postgres数据库。postgres的依赖关系是通过Maven添加的。 Maven依赖项 Postgres池 获取连接的代码 如果您有相同的问题,请将代码更改为:

  • 我正在开发一个基于nodejs和postgresql的corona病毒项目。我正在尝试在heroku上部署我的应用程序,但我遇到了一些问题。这些问题来自postgres配置(我认为)。 我有一个. env文件,其中我初始化了一些变量(DATABASE_URL,...),但我不知道如何将它们传输到heroku。我关联了一个插件postgres-heroku,它会生成一个具有随机值的DATABASE_

  • 这与之前未解决的一个帖子有关:这里C3P0似乎在Heroku上初始化连接池后立即进入死锁。这个问题不会发生在我的本地邮件上。 [DEBUG]“com.mchange.v2.resourcepool.basicresourcepool”2015-07-05 07:12:59,132:成功终止获取系列。递减的pending_acquires 1,Attests_Retailing:30 [DEBUG]

  • 我有一个Ruby网络应用程序在赫洛库上运行,有一个Postgres数据库。我注意到自动递增的ID在Postgres数据库被Heroku“维护”时有一个间隙。 差距是一次性的,然后ID再次增加1。像这样: Heroku的维护发生在两个记录(和)之间,于创建。 我看到了一个解释,即失败的事务将导致下一次成功提交时跳过一个ID,但我在应用程序日志中看不到任何指示当时正在创建任何记录的内容。