4

Railsアプリをデプロイしましたが、すべてのページで500エラーが発生します。私のproduction.logは何も表示していません(これは問題です)が、「スクリプト/コンソールの本番」を実行し、単純なクエリ(User.find:first)を実行しようとすると、次のようにスローされます。

Access denied for user 'root'@'localhost' (using password: NO)

私のdatabase.ymlファイルには間違いなくパスワードがあり、それは正しいです。

したがって、これに加えて、production.logファイルにエラーが記録されていないため、何が起きているのか不思議に思っています。

私が探し始めたアイデアや問題は何でしょうか?

また、その価値のために、私はApacheでPassengerを実行しています。

更新:これが私のdatabase.ymlファイルの内容です

development:
  adapter: mysql
  encoding: utf8
  database: website_development
  username: root
  password: secretz
  socket: /tmp/mysql.sock

test:
  adapter: mysql
  encoding: utf8
  database: website_test
  username: root
  password: secretz
  socket: /tmp/mysql.sock

production:
  adapter: mysql
  encoding: utf8
  database: website_production
  username: ttp_mysql
  password: secretz
  socket: /var/run/mysqld/mysqld.sock

新しい更新: mysqlユーザーを変更して、rootで実行されないようにしましたが、本番モードでは実行されないはずなのに、「Accessdenied for'root'@'localhost'」ビットが表示されます。 'root'として実行されています。

今は本当に混乱しています。

4

4 に答える 4

5

だから私は問題を見つけました。古いデータベースからデータベースを移行するために、/modelsフォルダーにいくつかのファイルを追加しました。

それらのファイルには、データベースに接続するための「ActiveRecord :: Base.establish_connection」があり、どういうわけか、それらは私のdatabase.ymlファイルにあるものをオーバーライドしていました(これらのファイルを直接呼び出していなかったとしても)。

いずれにせよ...それらを削除すると問題が解決しました。

これを理解するために時間を割いていただきありがとうございます!

于 2009-11-09T02:18:14.413 に答える
4

アカウントを使用しようとしてrootいるという事実と、ファイルに何も表示されていないという事実は、アプリケーションが本番モードproduction.logで実行されていないことを示唆しているようです。

これが当てはまるかどうかを簡単に確認するには、environment.rbファイル(上部近く)に次の行を追加し、アプリを再起動して、同じエラーが引き続き発生するかどうかを確認します。

ENV["RAILS_ENV"] = "production" 

:明らかな理由から、これは適切な方法ではないため、これが機能する場合でも、根本的な原因を特定し、ファイルからこの行を削除することをお勧めします。ただし、本番サーバーで問題が発生していることを確認すると、そもそも本番モードで実行されなかった理由を診断し続けながら、この回答によって少なくとも(元に戻って)実行できるようになることを願っています。

于 2009-11-08T23:04:05.070 に答える
2

同じ問題が発生し、Railsサーバーを再起動していないことに気付きました。それを試してみてください。

于 2012-12-12T16:09:02.133 に答える
1

私も同じ問題を抱えていました。すべての端末を閉じて、サーバーを再起動しました。それはうまくいきます!

于 2013-04-18T14:45:20.670 に答える