【发布时间】:2011-06-16 23:17:17
【问题描述】:
我刚刚从 mysql 切换到 postgres(耶!)但现在在我的 postgres 服务器上(仅)我收到一个错误:
SELECT DISTINCT, ORDER BY 表达式必须出现在选择列表中
这是同一个查询:
SELECT DISTINCT * FROM table ORDER BY '?'
顺便说一句,这是 django 自动生成的查询。或者,有什么方法可以让 django 真正呈现正确的 sql?
附录
事实证明,无论出于何种原因,在我的 Postgres 8.4 生产服务器上,Django 都消除了错误,而在我的 Postgres 9.0 开发服务器上却没有。我不知道它是否与 Postgres 版本有关,但实际上 Postgreses 和 MySQL 都没有错误。
【问题讨论】:
-
嗯,我可以通过在 pgsql 8.3 上执行
SELECT DISTINCT id FROM table ORDER BY non_select_field来重现该错误。 9允许吗?我们可以看到您的 django 查询吗?另外,你能澄清一下any way to get django to actually render correct html? -
你能告诉我们关于 8.4 和 9.0 的查询吗?我做了一个小测试,在 8.4 和 9.0 都失败了,完全没有区别。
-
我更仔细地查看了查询及其 SELECT DISTINCT...阳光下的一切... ORDER BY RANDOM()。我可以看到这是依赖于实现的。
标签: python django postgresql migration