我是Rails的新手。
我已准备好部署项目了。
我使用Sqlite3,但我想切换到Postgres。
我遵循了许多教程,但没有任何作用,所以我需要你的帮助。
当我按照Railscast的说明操作时,它不起作用:[http://railscasts.com/episodes/342-migrating-to-postgresql?view=asciicast][1]
当我跑步时:
rake db:migrate
它返回:
rake aborted! ActiveRecord::NoDatabaseError: FATAL: database "development" does not exis
当我跑...:
$ taps server sqlite://db/development.sqlite3 User password
..使用我在database.yml中设置的用户,
我设置" SECRET_KEY_BASE = mypassword"进入.env.development fil。
这是我的database.yml:
development:
adapter: postgresql
encoding: utf8
database: development
pool: 5
username: FC
password:
test: &TEST
adapter: postgresql
encoding: utf8
database: test
pool: 5
username: FC
password:
它返回:
/Users/fc/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `require': cannot load such file -- rack/showexceptions (LoadError)
from /Users/fc/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
from /Users/fc/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
from /Users/fc/.rvm/gems/ruby-2.3.0/gems/sinatra-1.0/lib/sinatra/showexceptions.rb:1:in `<top (required)>'
PG版:
psql (PostgreSQL) 9.4.4
psql:
/usr/local/bin/psql
我在这一点上输了,因为没有任何作用。
如何轻松地逐步进行迁移?
答案 0 :(得分:0)
我有同样的问题
kernel_require.rb:133:in `require': cannot load such file -- rack/showexceptions
我的ruby版本是2.3.0我刚刚切换到ruby 1.9.3临时,这个错误消失了
taps server sqlite://db/development.sqlite3 user password
现在上面的命令工作正常,所以我可以用点击 gem
将sqlite迁移到postgresql您需要安装这些宝石
tilt '1.4.1'
rack '1.0.1'
因为当你点击下面的命令时
taps pull postgres://admin:password@localhost/db_development http://user:password@localhost:5000
你可以看到这样的错误
ERROR: Rack::Utils::OkJson::Error: cannot encode Symbol: :schema_migrations
An error occurred but Hoptoad was not notified. To use Hoptoad, please
install the 'hoptoad_notifier' gem and set ENV["HOPTOAD_API_KEY"]
答案 1 :(得分:-1)
当我将我的应用程序从sqlite3迁移到postgres时,我遵循了以下步骤
1. Remove or comment sqlite3 gem
2. Add gem "pg" to your gem file and bundle
3. Add your database.yml
4. bundle exec rake db:setup
你应该启动并运行你的postgres服务器。
答案 2 :(得分:-1)
错误说的是您的数据库开发不存在。如果您想在开发模式下使用pg启动rails应用程序,则必须首先使用以下命令创建数据库:
rake db:create
但是,如果您不想部署您的应用并且仍然在本地使用它而不丢失任何巡回数据,只需将sqlite3设置为开发并将postgres设置为生产:
首先,您需要将pg gem添加到gemfile中的生产组,并将sqlite3添加到开发中,这样您就不会丢失任何数据: 从以下位置更改您的Gemfile:
source 'https://rubygems.org'
.....
gem 'sqlite3'
.
.
.
为:
source 'https://rubygems.org'
...
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
.
.
.
运行
bundle install
其次,解开包含sqlite3配置的config.yml生产部分并添加postgresql配置,如下所示:
production:
adapter: postgresql
pool: 5
timeout: 5000