PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

ProtocolViolation:ERRO:a mensagem de ligação fornece 0 parâmetros, mas a instrução preparada requer 1


No seu caso, parece que você está usando o @comments.to_sql você está puxando essa instrução preparada para sua subseleção sem trazer o parâmetro para ela. Você pode tentar apenas incluir os dados do comentário assim:
  @comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
  @comment_list = @comments.include(:comment)

Esse problema também parece vir da maneira como as instruções preparadas são construídas no Rails e podem ser causadas por problemas dentro do próprio Rails (problema do Rails #15920 , que foi corrigido no Rails 4.2) ou por problemas com várias gems que ajudam a gerar consultas (exemplo:problema do Rails #20236 ) ou até mesmo pela maneira como você define suas associações de modelo (problemas do Rails #12852 ).

É possível simplesmente desabilitar instruções preparadas adicionando uma diretiva ao seu database.yml Arquivo:
production:
  adapter: postgresql
  database: prod_dbname
  username: prod_user
  password: prod_pass
  prepared_statements: false

Mas primeiro, você pode querer verificar e certificar-se de que não está usando parâmetros desnecessários em suas associações de modelo como este:
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

...que deve deixar de fora foreign_key , assim:
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