- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
情景:
我目前在 Heroku 上有一个应用程序,它是 Sinatra Application + ActiveRecord。目前有效:
• 我可以查看我网站的静态页面
• 我能够运行迁移
• 我能够将我的本地开发数据库推送到我的 Heroku 数据库 (heroku db:push postgres://localhost/dev)
• 我能够从 Heroku 数据库拉到我的本地主机数据库 (heroku db:pull postgres://localhost/dev)
错误:
当我导航到一个进行简单查询的页面时:
@pics = Picture.find(:all)
我在我的日志文件中得到这个错误
DEBUG -- : NoMethodError: undefined method `values' for #<PGresult:0x00000002844098>: SHOW client_min_messages
DEBUG -- : PGError: ERROR: invalid value for parameter "client_min_messages": ""
: SET client_min_messages TO ''
ActiveRecord::StatementInvalid - PGError: ERROR: invalid value for parameter "client_min_messages": ""
/app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec'
此时我不确定出了什么问题,所以我决定登录到 heroku 控制台
并运行此命令以查看我的表是否在数据库中
> heroku console
> ActiveRecord::Base.connection.tables
我得到了类似的错误
ActiveRecord::StatementInvalid: PGError: ERROR: invalid value for parameter "client_min_messages": ""
: SET client_min_messages TO ''
/app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec'
/app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `block in execute'
/app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract_adapter.rb:244:in `block in log'
/app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
然后我决定在控制台中尝试这个...
> ActiveRecord::Base.establish_connection
> ActiveRecord::AdapterNotSpecified: ActiveRecord::AdapterNotSpecified
/app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:54:in `establish_connection'
/home/heroku_rack/lib/console.rb:158:in `block (2 levels) in <top (required)>'
/home/heroku_rack/lib/console.rb:148:in `eval'
/home/heroku_rack/lib/console.rb:148:in `_eval'
此时我似乎没有表和适配器连接,但是当我能够运行迁移并从 Heroku DB 推送和拉取时,这怎么可能呢?
所以我决定从头开始,重新做一遍。我似乎取得了一些进展,但我被卡住了。重新运行我上面提到的场景并成功。所以我的数据库,迁移和数据都在DB里面。但是我的应用程序仍然无法连接到数据库。但奇怪的是我的控制台交互。
> heroku console
> ActiveRecord::Base.connection_config
> {:adapter=>"postgresql", :database=>"1e2e12e21e", :username=>"1e2e12e21e", :password=>"i2j3i23joo12", :host=>"1e2-12e-2e1212-e2e2e1.compute-1.amazonaws.com", :port=>5432, :encoding=>"unicode"}
注意:我用这些假的东西替换了真实的细节只是为了说明
> ActiveRecord::Base.connection_handler
> #<ActiveRecord::ConnectionAdapters::ConnectionHandler:0x00000002f8a578 @connection_pools={"….
注意:这是一个很长的字符串,但它有内容
> ActiveRecord::Base.connected?
> false
到这里我真的不明白了?我不知道如何继续运行数据库迁移、保持推送和拉取数据、登录 Heroku 控制台查看我的 connection_config
详细信息,但是当我运行我的应用程序内部服务器错误时。当我在 heroku console
中运行 ActiveRecord::Base.connection.tables
时,我得到 ActiveRecord::StatementInvalid: PGError: ERROR: invalid value for parameter "client_min_messages": ""
关于我可能做错了什么的想法?
问题是这样的:Heroku 支持人员友好地向我指出了 activerecord 3.1.3 的一个已知问题。这是一个应该在未来更新中修复的错误:https://github.com/rails/rails/commit/92a3c487bb0d125c437e53a7f45c31fcca97f2d9
如何解决问题:我决定在我的 gemfile gem "activerecord", "~> 3.0.9
中使用低得多的 activerecord 版本,我的网站目前已经正常运行,没有任何问题。
为什么我以前从来没有尝试过这个,我不知道。我希望这篇文章还有其他人。
最佳答案
这个问题困扰我很久了,快把我逼疯了。我无法在任何地方找到解决方案(许多 Rails 更新都没有解决“问题”),所以我决定自己解决这个问题。事实证明这是一个简单的修复。只需添加一个额外的键值对::min_messages => "warn"
(或任何您想要的消息级别)到配置 block 中的 ActiveRecord 设置。这是我现在在我的 Sinatra 应用程序中使用的,使用 Sinatra 1.3.2 和 ActiveRecord 3.2.2:
db = URI.parse(ENV['DATABASE_URL'] || "postgres://user:password@localhost/database")
adapter = (db.scheme == "postres") ? "postgresql" : db.scheme
ActiveRecord::Base.configurations[:production] = {
:adapter => adapter,
:username => db.user,
:password => db.password,
:port => db.port,
:database => db.path.sub(%r(^/),""),
:host => db.host,
:min_messages => "warn"
}
unless ActiveRecord::Base.connected?
ActiveRecord::Base.establish_connection ActiveRecord::Base.configurations[:production]
ActiveRecord::Base.logger = Logger.new(STDOUT)
end
希望这对您和其他遇到这些问题的人有帮助!
关于postgresql - Heroku ActiveRecord::StatementInvalid: PGError: ERROR: 上的 Sinatra 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8775406/
我有以下的named_scope,它在MySQL和sqlite中工作正常,但在Postgres中却很糟糕: course.rb named_scope :current, :conditions =>
在我的应用程序整夜闲置之后,当我在早上尝试访问它时,我收到 500 内部服务器错误并且日志显示“PGError:未连接到服务器”。在第一个请求之后,如果我再次刷新页面,一切都很好。 我在远程服务器上运
无法弄清楚这个 postgresql 错误到底在说什么。 PGError: ERROR: syntax error at or near "NULL" LINE 1: ...at` < '2011-
我在 Heroku 上而非本地收到 ActiveRecord PGError。来自 Heroku 日志的错误消息是: ActiveRecord::StatementInvalid (PGError:
我将 Rails 应用程序与 PostgreSql 数据库结合使用。我的应用程序在 PostgreSql 上运行良好。我想在服务器上运行我的迁移,我运行命令 RAILS_ENV=production
我在本地使用 SQLite 进行开发,但在我的生产主机上运行 PostgreSQL。在本地一切正常,但在生产主机上却不是这样。 我已经构建了一种搜索表单,通过它我可以使用我喜欢的任何组合来评估我数据库
当我尝试使用“$rails s”运行本地主机时,我不断收到此错误: (Mac OSX 10.8.3)(ruby 2.0.0p195 (2013-05-14 修订版 40734) [x86_64-dar
使用:Rails 3.0.3 和 Heroku 与 Postgresql。 我收到了很多异常,例如这个: A ActiveRecord::StatementInvalid occurred in ho
尝试在本地主机上启动我的 Rails 应用程序时出现以下错误: PGError (could not connect to server: No such file or directory Is t
我正在尝试将一个简单的应用程序推送到 heroku 并运行: heroku rake db:migrate 但是我得到以下错误: rake aborted! PGError: ERROR: rela
我正在使用 Ruby 1.9.2、Rails 3.1、Rspec、Postgres 和 Spork,但我无法让它们很好地协同工作。 第一次运行规范(Spork 在后台运行)工作正常。但是,当我第二次运
我有一个适用于 MySQL 但不适用于 PostGres 的 Ruby on Rails 条件 :conditions => ["A between ? and ? and B between ? a
我正在尝试将列“isGroup”的值更改为值“public”。 我创建了一个迁移: Post.connection.execute("update Posts set isgroup='public'
我最近完成了此处概述的数据库迁移过程: https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-p
我使用 heroku 和 postgresql 的应用程序 100% 宕机,应用程序崩溃并出现 H10 错误。我相信下面的日志是问题的根源: 2012-08-28T19:17:44+00:00 app
我为我的应用程序开发的这个页面在本地运行良好(使用 sqllite3),但是当我将它推送到使用 PostgreSQL 的 Heroku 时,我收到此错误: NeighborhoodsControlle
你好, 我在测试 Rails 应用程序时遇到此错误。我没有名为“说明”的表。但它显示了一个错误,如“错误:关系“指令”不存在”。总的来说,我在 64 次测试中遇到了与 64 次错误相同的错误。 我使用
当我尝试从 postgresql 数据库中的表中选择 cookie 值时,标题中出现错误,我不知道为什么。选择此表中的其他字段工作正常。 这是中断的行: user=UniqueUser.find(:a
情景: 我目前在 Heroku 上有一个应用程序,它是 Sinatra Application + ActiveRecord。目前有效: • 我可以查看我网站的静态页面 • 我能够运行迁移 • 我能够
我在从 Cloudmailin 接收 Rails 电子邮件时收到以下 PGError: PGError: ERROR: invalid byte sequence for encoding "UTF8
我是一名优秀的程序员,十分优秀!