sql >> Databasteknik >  >> RDS >> PostgreSQL

ProtocolViolation:FEL:bindningsmeddelande tillhandahåller 0 parametrar, men förberedd sats kräver 1

I ditt fall verkar det som om du använder @comments.to_sql du drar in det förberedda uttalandet i ditt underval utan att ta in parametern för det. Du kan prova att bara inkludera kommentarsdata så här:

  @comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
  @comment_list = @comments.include(:comment)

Det här problemet verkar också komma från det sätt som de förberedda uttalandena är inbyggda i Rails och kan orsakas av båda problem inom Rails själv (Rails problem #15920 , som har åtgärdats i Rails 4.2) eller av problem med olika ädelstenar som hjälper till att generera frågor (exempel:Rails-problem #20236 ) eller till och med hur du definierar dina modellassociationer (Rails problem #12852 ).

Det är möjligt att helt enkelt inaktivera förberedda uttalanden genom att lägga till ett direktiv till din database.yml fil:

production:
  adapter: postgresql
  database: prod_dbname
  username: prod_user
  password: prod_pass
  prepared_statements: false

Men först kanske du vill kontrollera och se till att du inte använder onödiga parametrar i dina modellassociationer så här:

class DashboardTab < ActiveRecord::Base
  has_many :dashboard_tab_feeds, foreign_key: :dashboard_tab_id, dependent: :destroy
  has_many :social_feeds, through: :dashboard_tab_feeds
end

class DashboardTabFeed < ActiveRecord::Base
  belongs_to :social_feed
  belongs_to :dashboard_tab
end

class SocialFeed < ActiveRecord::Base
  has_many :dashboard_tab_feeds, foreign_key: :social_feed_id, dependent: :destroy
end

...som bara borde utelämna foreign_key , så här:

class DashboardTab < ActiveRecord::Base
  has_many :dashboard_tab_feeds, dependent: :destroy
  has_many :social_feeds, through: :dashboard_tab_feeds
end

class DashboardTabFeed < ActiveRecord::Base
  belongs_to :social_feed
  belongs_to :dashboard_tab
end

class SocialFeed < ActiveRecord::Base
  has_many :dashboard_tab_feeds, dependent: :destroy
end



  1. Ställa in ett värde för LIMIT när du använder massinsamling

  2. Starta om Mysql automatiskt när ubuntu på EC2-mikroinstans dödar den när det tar slut på minne

  3. Trender under 2020 som DBA:er bör vara medvetna om

  4. Kan jag infoga data i ett AUTOINCREMENT-fält?