我是 Rails/终端用户的新手,刚刚全新安装了 Lion + Xcode + Rails。不像以前(在 Snow Leopard 上),我现在在运行 rake db:migrate 时遇到错误。
我已经通过 git 克隆了我的代码,它运行良好,并使用“createdb”命令创建了数据库,但是当我尝试在终端中运行“rake db:migrate”时,它现在出现了这个错误:
rake aborted!
development database is not configured
我的 config/database.yml 文件在开发部分看起来像下面的样子,这正是它之前在 Snow Leopard 上运行良好的方式,所以不知道我现在遇到的错误是否与 Lion 相关。
development:
adapter: postgresql
database: my_db
username: rasmus
encoding: utf8
pool: 5
有人能帮忙吗?
我遇到了同样的错误,在我的例子中,这是因为 database.yml 没有正确缩进。所有配置参数都应缩进。
注意,一定要遵循正确的间距约定。数据库配置是空格感知的。每个属性两个空格工作正常。在下面的代码中,请注意每个属性如何有两个空格。不要使用制表符。如果您不为属性使用空格,rake 将无法工作并抛出相同的错误。
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: postgresql
encoding: unicode
database: db/production
pool: 5
timeout: 5000
password:
您可能还想在文件中查找语法错误。如果您的
config/database.yml
文件中存在语法错误并且您尝试执行诸如启动本地 Web 服务器或运行 rake db:migrate
之类的操作,则会出现此错误。
在我的例子中,我不小心从文件顶部的一行中删除了注释,我看到了这个错误,因为未注释的行使它成为一个无效的 yml 文件。
解决了!
我的“gem install pg”还没有运行,所以基本上我错过了 pg gem。在终端中“gem install pg”之后一切正常。
这是给 Google 员工的 PEBCAK 答案 - 检查您的 Gemfile 并确保您已在
Gemfile
的正确组中指定了数据库适配器 gem。我只为:production
和:staging
定义了我的定义,并且在从mysql切换后必须在我的开发机器上手动运行gem install pg
。今天早上我清空了应用程序的所有宝石并重新bundle install
-ed它们,然后无法弄清楚为什么数据库无法连接。将 pg
gem spec 移到任何组之外并运行 bundle install
解决了问题。
给登陆此问题页面的其他人的注意事项:确保您正确运行 rake db 命令,即:
rake db:migrate
代替rake db migrate
在我的案例中,在 rake db:create 失败时尝试了以上所有方法,是为了确保我的 Rakefile 已正确配置。
这完成了工作:
require "sinatra/activerecord/rake"
require 'sinatra/asset_pipeline/task'
namespace :db do
task :load_config do
require "./app"
end
end
谢谢!
这个对我有用。我唯一没有 asset_pipeline 但是一旦我删除了 require-line rake 任务就没有问题了。
非常感谢