我在Rails 4中使用Apartment gem来支持Heroku上的Postgres 9.3.3中的多租户.
Apartment gem创建新租户时发生错误.
深入调查显示已创建架构,但内部没有表格.
PG::Error: ERROR: function pg_stat_statements_reset() does not exist
解决方法
创建新模式时,Postgres尝试通过执行函数pg_stat_statements_reset()来重置统计信息
默认情况下,此功能只能由超级用户(from original doc)执行.
Heroku不会为您提供超级用户权限.
所以你需要禁用扩展名pg_stat_statements.
在schema public中执行sql语句
DROP EXTENSION pg_stat_statements;
解决方案2 – 通过迁移
1)检查文件db / schema.rb.最有可能它包含一条线
enable_extension "pg_stat_statements"
2)创建迁移文件
rails g migration DropExtensionPgStatStatements
3)定义self.up方法
def self.up disable_extension "pg_stat_statements" end
4)应用迁移
rake db:migrate
5)现在文件db / schema.rb不应包含该行
6)提交更改(架构和迁移文件)并部署到Heroku
rake deploy:production:migrations
关于rake任务,请参见deploy.rake