6

これに何か問題がありますか (ユーザー モデル、95 行目):

scope :by_recent, where('created_at BETWEEN ? AND ?', 1.month.ago, Time.now).order('created_at desc').

rails s または rails c を起動すると、次のようになります。

 /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log': PGError: ERROR:  unrecognized time zone name: "UTC" (ActiveRecord::StatementInvalid)

私のモデルでその行にコメントすると、エラーがなくなります。変。ちなみにpostgres9を使っています。Homebrew (brew install posgtres) 経由でインストールされます。

このリンクは、以下を示唆しています。しかし、私はその人が解決策として何を提案しているのか理解できません...

MikZ:私はこれを理解しました

レールはアクセサーを自動タイムゾーン変換で設定しています(テーブル列を使用して)アクセサーをオーバーライドすると、深刻な問題が発生します

Rails のデフォルトのまま (またはタイムゾーンを設定) すると良い結果が得られますが、アクセサーをオーバーライドすると深刻な問題が発生します。

そのため、「時間」属性のアクセサーをオーバーライドしないでください

完全なエラー:

/Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log': PGError: ERROR:  unrecognized time zone name: "UTC" (ActiveRecord::StatementInvalid)
: SET time zone 'UTC'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:194:in `log'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:496:in `execute'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:961:in `configure_connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:939:in `connect'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:228:in `initialize'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:25:in `new'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:25:in `postgresql_connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:228:in `new_connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `checkout_new_connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `block (2 levels) in checkout'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in `loop'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in `block in checkout'
    from /Users/Chris/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:185:in `checkout'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:93:in `connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:316:in `retrieve_connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:97:in `retrieve_connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in `connection'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/base.rb:1330:in `replace_bind_variables'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/base.rb:1317:in `sanitize_sql_array'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/base.rb:1224:in `sanitize_sql_for_conditions'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/relation/query_methods.rb:206:in `build_where'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/relation/query_methods.rb:77:in `where'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/base.rb:441:in `where'
    from /Users/Chris/Sites/site_name/app/models/user.rb:95:in `<class:User>'
    from /Users/Chris/Sites/site_name/app/models/user.rb:1:in `<top (required)>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:454:in `load'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:454:in `block in load_file'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:453:in `load_file'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:340:in `require_or_load'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:491:in `load_missing_constant'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:183:in `block in const_missing'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:181:in `each'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:181:in `const_missing'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/inflector/methods.rb:124:in `block in constantize'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/inflector/methods.rb:123:in `each'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/inflector/methods.rb:123:in `constantize'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:528:in `block in <class:Reference>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:538:in `yield'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:538:in `default'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:538:in `get'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/bundler/gems/devise-bbaaefa995c3/lib/devise/mapping.rb:76:in `to'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/bundler/gems/devise-bbaaefa995c3/lib/devise/rails/routes.rb:164:in `block in devise_for'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/bundler/gems/devise-bbaaefa995c3/lib/devise/rails/routes.rb:160:in `each'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/bundler/gems/devise-bbaaefa995c3/lib/devise/rails/routes.rb:160:in `devise_for'
    from /Users/Chris/Sites/site_name/config/routes.rb:75:in `block in <top (required)>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:233:in `instance_exec'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:233:in `draw'
    from /Users/Chris/Sites/site_name/config/routes.rb:1:in `<top (required)>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `block in load'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:127:in `block in reload_routes!'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:127:in `each'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:127:in `reload_routes!'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:120:in `block in routes_reloader'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/file_update_checker.rb:32:in `call'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/file_update_checker.rb:32:in `execute_if_updated'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application/finisher.rb:51:in `block (2 levels) in <module:Finisher>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application/finisher.rb:52:in `call'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application/finisher.rb:52:in `block in <module:Finisher>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/initializable.rb:25:in `instance_exec'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/initializable.rb:25:in `run'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/initializable.rb:50:in `block in run_initializers'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/initializable.rb:49:in `each'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/initializable.rb:49:in `run_initializers'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:134:in `initialize!'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
    from /Users/Chris/Sites/site_name/config/environment.rb:5:in `<top (required)>'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `block in require'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:103:in `require_environment!'
    from /Users/Chris/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands.rb:22:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

編集:

実際、問題はこの問題に関連しています。また、macports から自作に移行しました。postgres を homebrew でインストールする前に、/opt/local を削除する必要がありますか?

次に、rake db:drop:all と rake db:create は実行できますが、rake db:migrate は実行できません。私は得る:

rake aborted!
PGError: ERROR:  unrecognized time zone name: "UTC"
: SET time zone 'UTC'
4

5 に答える 5

13

そうです、データベースに重大な問題があるように見えたのかもしれません。自作経由でPostgreSqlをインストールしたことを思い出しましたが、バックグラウンドでまだ実行されていたpostgresサーバーのmacportインストールを停止しなかった可能性があります。

別の開発者 (RhodiumToad) の支援により、次の手順を実行してこれを修正できました。

  1. サーバーを停止する
  2. initdb を再実行します
  3. サーバーを再起動する

以前、rm -rf /usr/local/var/postgres を使用して /usr/local/var/postgres を削除しました。だから、これは私がしなければならなかったことです:

ps axw

postgres サーバーを見つける

117   ??  S      0:00.23 /usr/local/Cellar/postgresql/9.0.3/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.

それを殺します。これにより、bg で実行されている他のすべての postgres プロセスも強制終了されます。

kill 117

上記はプロセスを強制終了し、サーバーも停止しました。ここで、データベースを初期化する必要がありましたが、すべてが再び正しく機能しているようです:

initdb /usr/local/var/postgres

これが同じ問題に遭遇した人に役立つことを願っています。

于 2011-02-20T11:56:55.197 に答える
5

私の問題は、PostgreSQL サーバーの複数のインスタンスを実行していたことです。すべてのプロセスを強制終了して、必要なプロセスだけを再起動するとうまくいきました。なぜこれが原因だったのかわからないPGError: ERROR: unrecognized time zone name: "UTC" : SET time zone 'UTC'

 ps axw | grep postgres

次にkill、クリスチャンが上で言ったように。

注: initdb を再度実行する必要はありませんでした。

于 2012-08-10T13:46:58.967 に答える
0

100%確実ではありませんが、スコープを定義する方法により、渡したTimeパラメーターから文字列が作成されるため、問題が発生する可能性があります。代わりに記号を使用してみて、それが機能するかどうかを確認してください。

scope { :conditions => {:created_at => 1.month.ago..Time.now}, :order => 'model.created_at DESC' }
于 2011-02-19T16:58:15.820 に答える
0

さて、あなたのモデルのその行の何かが、データベースと通信するときに使用中のタイムゾーンを修正しようとしていると推測しています。私はそれが一種の理にかなっていると思います...

とにかく、文字列が接続時にpostgresqlに送信されるコマンドであると仮定するSET time zone 'UTC'と(そのバックトレースを見るとそうなるようです)、それが機能することを期待します。確かにそれはpostgresqlの私自身(Linux)のインストールで動作します。psqlを使用してデータベースに接続し、コマンドを手動で発行した場合に失敗することを確認できますか?

postgresqlのインストールが壊れていることを示しているようです。物事を片付けて再インストールすることは、試すのに合理的なステップです。私自身のpostgresqlのインストールでは、オペレーティングシステムからのタイムゾーンデータを使用してい/usr/share/zoneinfoます。インストールが、ビルド中に存在していたが、移行後に削除された場所からデータを取得しようとしている可能性があります。設定時にデータのある場所を見つけることができないはずです。独自のバンドルされたコピーをインストールします。

于 2011-02-19T17:04:08.683 に答える
0

このエラーは、Postgres がアップグレードされたが再起動されていないために発生します。実行中の古いバージョンは、存在しないタイムゾーン ファイルを探していました。

ここで述べたように再起動しました:https://stackoverflow.com/a/20566779/1682263

于 2014-04-14T08:16:00.360 に答える