【发布时间】:2020-05-12 17:07:03
【问题描述】:
所以这显然是这些奇怪的日子之一......而且我知道这没有意义。
我正在 datagrip(一种执行原始查询的工具)中对与我的 phoenix 应用程序中完全相同的数据库执行查询。他们返回的结果不同。
查询相当复杂,但它是唯一显示不同结果的查询。所以我不能简化它。我尝试了其他查询以确保我拥有相同的数据库、重新启动服务器等。
这是从我的控制台执行的完全相同的查询。如您所见,结果不一样。缺少几行。
我还通过执行select now() => 来检查这是否是时间问题(或多或少很明显)。如果我只执行 generate_series 部分,它会返回相同的结果。所以它可能与连接有关。
我还检查了ttnmessages 表中的最后几个条目,以确保没有一般的缓存问题。那里的查询也确实给出了相同的结果。
所以我的问题是:Ecto 在执行查询时有什么不同吗?我怎么能弄清楚这个?我很感激任何提示。
编辑:查询在这两种情况下:
SELECT g.series AS time, MAX((t.payload ->'pulse')::text::numeric) as pulse
FROM generate_series(date_trunc('hour', now())- INTERVAL '12 hours', date_trunc('hour', now()), INTERVAL '60 min') AS g(series)
LEFT JOIN ttnmessages t
ON t.inserted_at < g.series + INTERVAL '60 min'
AND t.inserted_at > g.series
WHERE t.hardware_serial LIKE '093B55DF0C2C525A'
GROUP BY g.series
ORDER BY g.series;
【问题讨论】:
-
要弄清楚使用
Ecto.Adapters.SQL.to_sql/3;我在这里无法提供更多帮助,因为您已决定发布屏幕截图而不是 SO 在规则中要求的纯文本,因此,我无法阅读它们的内容。 -
谢谢,我已将查询添加为纯文本。我已经在两端使用 SQL,所以
to_sql/3不会帮助我。
标签: postgresql elixir ecto