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

ProtocolViolation:ГРЕШКА:съобщението за свързване предоставя 0 параметъра, но подготвеният израз изисква 1

Във вашия случай изглежда, че защото използвате @comments.to_sql вие изтегляте този подготвен израз във вашия подизбор, без да въвеждате параметъра за него. Можете да опитате просто да включите данните за коментара по този начин:

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

Този проблем също изглежда идва от начина, по който подготвените изрази са изградени в Rails и може да бъде причинен от проблеми в самия Rails (проблем с Rails #15920 , което е коригирано в Rails 4.2) или от проблеми с различни скъпоценни камъни, които помагат за генериране на заявки (пример:проблем с Rails #20236 ) или дори по начина, по който дефинирате асоциациите на вашите модели (проблеми с Rails #12852 ).

Възможно е просто да деактивирате подготвените изрази, като добавите директива към вашия database.yml файл:

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

Но първо може да искате да проверите и да се уверите, че не използвате ненужни параметри във вашите асоциации на модели като това:

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

...което просто трябва да остави foreign_key , като това:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържете две таблици в поле за външен ключ, използвайки django ORM?

  2. Подаване на param към DB .execute за списък WHERE IN... INT

  3. Персонализирани изключения на PostgreSQL?

  4. SQLalchemy не извършва промени при задаване на роля

  5. Rails 3:грешка при миграция при използване на json като тип колона в ActiveRecord, поддържан от Postgres