sql >> Database >  >> RDS >> PostgreSQL

Protocolschending:FOUT:bindbericht levert 0 parameters, maar voorbereide instructie vereist 1

In jouw geval lijkt het erop dat omdat je de @comments.to_sql . gebruikt je trekt dat voorbereide statement naar je subselect zonder de parameter ervoor in te voeren. Je kunt proberen om de reactiegegevens als volgt op te nemen:

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

Dit probleem lijkt ook voort te komen uit de manier waarop de voorbereide instructies zijn ingebouwd in Rails en kan worden veroorzaakt door problemen binnen Rails zelf (Rails-probleem #15920 , die is opgelost in Rails 4.2) of door problemen met verschillende edelstenen die helpen bij het genereren van zoekopdrachten (bijvoorbeeld:Rails-probleem #20236 ) of zelfs door de manier waarop u uw modelassociaties definieert (Rails-problemen #12852 ).

Het is mogelijk om voorbereide instructies volledig uit te schakelen door een instructie toe te voegen aan uw database.yml bestand:

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

Maar eerst wilt u misschien controleren en ervoor zorgen dat u geen onnodige parameters gebruikt in uw modelassociaties zoals deze:

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

...die gewoon foreign_key moet weglaten , zoals dit:

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. Hoe strings in pdo te ontsnappen?

  2. hoe je willekeurige rijen in orakel sneller kunt selecteren met een tabel met miljoenen rijen

  3. Voorwaardelijke externe sleutel voor meerdere tabellen

  4. Tijdzone behouden in PostgreSQL-tijdstempeltype