我在本地修改了我的rails项目的问题(使用postgres配置),同时在
database.yml中添加了这个语句:
test: prepared_statements: false
我修复的错误与此问题有关:
PG::ProtocolViolation: ERROR: bind message supplies 2 parameters,but prepared statement "a24" requires 1
现在,我想用postgres数据库修复我在Heroku上托管的生产应用程序.我不知道如何禁用预准备语句,因为database.yml是自动生成的.我试图追加:
/database?prepared_statements=false
到我的数据库的URI,但它最终导致错误的DATABSE_URL,所以我无法连接到我的数据库.
禁用prepared_statement的过程和正确语法是什么?
解决方法
截至2014年2月19日,heroku
no longer overrides
database.yml
因此您可以按照
latest docs的建议关闭database.yml文件的生产和登台(或默认)块中的预准备语句:
default: &default adapter: postgresql encoding: unicode pool: 5 prepared_statements: false development: <<: *default database: myapp_development test: <<: *default database: myapp_test production: <<: *default url: <%= ENV['DATABASE_URL'] %> pool: <%= ENV['DB_POOL'] || ENV['MAX_THREADS'] || 5 %> staging: <<: *default url: <%= ENV['DATABASE_URL'] %> pool: <%= ENV['DB_POOL'] || ENV['MAX_THREADS'] || 5 %>