1

我刚刚使用 capistrano、nginx 和 unicorn 部署了一个应用程序。我曾经使用 Apache 和 Passenger,但我正在尝试一些新的东西。

我的 production.log 中不断出现错误ActiveRecord::StatementInvalid (Could not find table 'users')(我已经检查过,这些表确实存在于 MySQL 中)。

我一直在寻找错误的原因,我发现 Rails 似乎正在寻找开发数据库(sqlite3)而不是生产数据库(mysql)。

我遵循 RailsCast 335 http://railscasts.com/episodes/335-deploying-to-a-vps但我使用的是 MySQL 而不是 Postgres。

我的 database.yml 文件位于 /apps/myappname/shared/config,这就是它包含的内容(没有用于测试或开发 dbs 的信息)...

production:
  adapter: mysql2
  database: dbname
  pool: 5
  timeout: 5000
  host: localhost
  username: db_user
  password: secret

那么为什么 Rails 不查看这个文件来进行数据库访问呢?

4

1 回答 1

2

你的gemfile呢?

您必须指定用于开发的数据库和用于生产的数据库:

# make sure you place your db gems in a group block
group :development do
  gem 'sqlite3'
end

group :production do
  gem 'mysql'
end
于 2012-07-03T23:19:50.907 回答