我部署了我的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
NEW UPDATE:我更改了mysql用户,因此它没有在root中运行,但现在我仍然得到“访问被拒绝'root'@'localhost'”位... 。尽管在生产模式下它根本不应该作为“root”运行。
现在真的很困惑。
答案 0 :(得分:5)
所以我发现了这个问题。我已经在我的/ models文件夹中添加了一些文件,用于从旧数据库进行一些数据库迁移。
在那些文件中,我有“ActiveRecord :: Base.establish_connection”来连接数据库,不知怎的,这些文件覆盖了我的database.yml文件中的内容(即使我没有直接调用这些文件)。
无论哪种方式......删除那些解决了问题。
感谢您花时间尝试解决这个问题!
答案 1 :(得分:4)
它尝试使用root
帐户以及您在production.log
文件中没有看到任何内容的事实似乎表明应用程序未在中运行制作模式。
要轻松检查这是否属实,请尝试将以下行添加到environment.rb文件(靠近顶部),重新启动应用,然后查看是否仍然出现相同的错误:
ENV["RAILS_ENV"] = "production"
注意:由于显而易见的原因,这是不是良好做法,所以即使这样做,我建议查找根本原因并从文件中删除此行。但是,当您在生产服务器上看到问题时,我希望这个答案至少会让您(后退)启动并运行,同时继续诊断为什么它没有运行生产模式首先。
答案 2 :(得分:2)
我有同样的问题,并意识到我没有重新启动我的rails服务器。试一试。
答案 3 :(得分:1)
我也有同样的问题。我关闭了所有终端并重新启动了服务器。它工作正常!