从Sqlite3迁移到PostgreSQL Rails

时间:2013-10-15 13:50:54

标签: ruby-on-rails ruby postgresql heroku sqlite

我正在尝试将我的数据库移动到PostgreSQL,因为我将它放在Heroku上。 关注Railscast #342。安装PostgreSLQ及其依赖于我的Ubuntu机器。当我安装它时,我认为用户已创建。我在database.yml中使用过这个用户。它看起来像这样:

production:
  adapter: postgresql
  encoding: unicode
  database: dlrvbtApp1_production
  pool: 5
  username: jdartland
  password: 

development:
  adapter: postgresql
  encoding: unicode
  database: dlrvbtApp1_development
  pool: 5
  username: jdartland
  password: 

test:
  adapter: postgresql
  encoding: unicode
  database: dlrvbtApp1_test
  pool: 5
  username: jdartland
  password: 

已安装pg gemtaps gem。 跑一Bundle install,用rake db:create:all

创建数据库

使用taps server sqlite://db/development.sqlite3 jdartland secure

启动了点击senatra服务器

服务器已启动。并试图通过此命令将SQL拉到我的新开发数据库。

taps pull postgres://jdartland@localhost/dlrvbtApp1_development http://jdartland:secret@localhost:5000

然后我收到此错误:

Failed to connect to database:
  Sequel::DatabaseConnectionError -> PG::ConnectionBad: fe_sendauth: no password supplied

我已经尝试并尝试过,创建了新的数据库,使用.yml,pg_config等等,但是我无法让它工作。 这是我第一次使用PostgreSQL和Heroku,请帮我一把! :)

4 个答案:

答案 0 :(得分:1)

将生产中的用户更改为localhost并将密码留空。

production:
  adapter: postgresql
  encoding: unicode
  database: dlrvbtApp1_production
  pool: 5
  username: localhost
  password: 

答案 1 :(得分:1)

如果您要将数据库移动到Heroku,整个过程就是将数据库连接到Heroku的PG,并迁移数据。

您是否从Heroku收到了数据库详细信息? 他们基本上使用亚马逊服务他们的数据库,你会得到一些凭据放入你的yml文件中。以下是我们的Heroku应用程序之一的示例:

production:
  adapter: postgresql
  database: ********
  pool: 5
  username: ****************
  password: ****************
  port: 5432
  host: ec2-54-228-234-250.eu-west-1.compute.amazonaws.com

如何迁移到PostgreSQL(Heroku)

如果您希望将数据从SQLite3迁移到PostgreSQL,我找到了一个非常好的教程,介绍如何执行此操作here。唯一的问题是它不适用于SQLite lol

答案 2 :(得分:1)

如果您尝试将数据库从Heroku下载到本地postgres数据库,请使用pg:pull或pgbackups:

您还应该考虑使用foreman和.env文件来设置DATABASE_URL,类似于在Heroku上运行它的方式,用于dev / prod parity:

答案 3 :(得分:0)

通过在堆栈上关注另一篇文章来完成它。只需上一个目录,安装了水龙头Gem install Taps。卸载Rack gem gem uninstall rack 4然后重新安装gem install rack --version 1.0.1。没有在我的progect目录中这样做,只是在RVM中。然后从同一目录中拉出数据库。 (不是来自我的项目目录)。

这是整个步骤:taps migration failing from sqlite to postgres rails4, ruby 1.9.3

希望它可以帮助有同样问题的人。

现在只剩下一件事了,把它推到heroku .....我们会看到它是怎么回事......呵呵

感谢您的帮助!