PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres:Грешка при използване на GROUP BY и ORDER (на heroku)

Вашият непосредствен проблем е, че произвеждате невалиден SQL за PostgreSQL:

SELECT category FROM "microposts" GROUP BY category ORDER BY microposts.created_at DESC

Вашият ORDER BY не отговаря на останалата част от заявката ви. Не можете да използвате колона в групирана заявка, освен ако тази колона също не е групирана или ако колоната се появява в обобщена функция, това означава съобщението за грешка. Причината е, че PostgreSQL няма да знае кой ред е created_at да се използва, когато група редове се комбинират от клаузата GROUP BY; някои бази данни просто мълчаливо избират ред сами, PostgreSQL предпочита да бъде строг и иска сами да премахнете неяснотата.

Опитайте сами да посочите поръчката:

@categories = Micropost.select("category").group("category").order("category")

Друг вариант е да използвате DISTINCT вместо GROUP BY, за да избегнете дублиране:

@categories = Micropost.select('DISTINCT(category)')

Между другото, наистина не трябва да правите такива неща в изглед, може да искате да го преместите в контролера си.

Вашият истински проблем е, че разработвате върху една база данни, докато внедрявате върху друга. Препоръчвам ви да превключите средата си за разработка на PostgreSQL 8.3 (ако внедрявате в споделена база данни на Heroku) или PostgreSQL 9.0 (ако внедрявате в специална база данни).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да коригирате OperationalError:(psycopg2.OperationalError) сървърът затвори връзката неочаквано

  2. ИЗТРИВАНЕ на рекурсивен PostgreSQL

  3. Инсталацията на Odoo на Mac не можа да изпълни команда LESSC

  4. Heroku прехвърля db от едно приложение в друго

  5. Добавяне на индекс към булево поле