sql >> Databáze >  >> RDS >> PostgreSQL

ProtocolViolation:ERROR:zpráva vazby poskytuje 0 parametrů, ale připravený příkaz vyžaduje 1

Ve vašem případě se zdá, že proto, že používáte @comments.to_sql vytahujete tento připravený příkaz do svého podvýběru, aniž byste pro něj vnesli parametr. Můžete zkusit zahrnout data komentářů takto:

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

Zdá se také, že tento problém pochází ze způsobu, jakým jsou připravená prohlášení sestavena v Rails, a mohl by být způsoben buď problémy v samotném Rails (problém Rails #15920 , který byl opraven v Rails 4.2) nebo problémy s různými drahokamy, které pomáhají generovat dotazy (příklad:Problém Rails #20236 ) nebo dokonce tím, jak definujete své přidružení modelu (problémy s kolejnicemi #12852 ).

Připravené příkazy je možné rovnou deaktivovat přidáním direktivy do database.yml soubor:

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

Nejprve však možná budete chtít zkontrolovat a ujistit se, že ve svých přidruženích k modelu nepoužíváte zbytečné parametry, jako je tento:

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

...který by měl vynechat foreign_key , takto:

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. Jak uzamknout stoly pomocí codeigniter?

  2. mybatis generátor Vzor názvu sloupce nemůže být NULL ani prázdný

  3. Typ dat VarBinary vs Image SQL Server pro ukládání binárních dat?

  4. Eval() zobrazí vlastní hodnotu, pokud je null