【发布时间】:2017-02-26 09:05:12
【问题描述】:
我是 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 文件。
这是我的 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
我现在迷路了,因为没有任何效果。
如何一步一步轻松完成迁移?
【问题讨论】:
-
解决
database "development" does not exist先运行rake db:create然后迁移 -
“rake db:create”如何知道我需要创建“开发数据库”?为什么我必须创建一个数据库,即使我已经从 sqlite3 获得了?我只想将 sqlite db 迁移到 postgres。
-
您说您正在从 sqlite 迁移到 postgres,因此您需要先在
postgres创建数据库然后迁移,它会知道它需要创建开发数据库,因为您在 database.yml提到database: development,关于保留数据,您需要将sqlite转储提供给psql -
当我运行 rake db:create 它返回:PG::InsufficientPrivilege: ERROR: permission denied to create database : CREATE DATABASE "development" ENCODING = 'utf8'
-
这意味着您的 postgres 用户
FC没有创建数据库的权限。检查此stackoverflow.com/a/31669921/4587148 以创建新用户并授予权限并更改 database.yml 中的用户
标签: ruby-on-rails ruby postgresql sqlite