0

当我尝试在现有应用程序中从 sqlite3 切换到 postgresql 时,我遇到了这个问题rake db:migrate,我做了以下

1 - 耙分贝:创建

2-rake db:migrate我收到此错误:

== AddColumn1: migrating ===================================================== -- add_column(:users, :first_name, :string) rake aborted! An error has occurred, this and all later migrations canceled: PG::Error: ERROR: relation "users" does not exist

3-rake db:reset

4- rake db:migrate,现在迁移完成,没有错误

由于 rake db:reset,我丢失了我的数据,特别是我的管理员用户,我的问题是:

1-为什么我被迫使用rake db:reset

2-有没有办法将我的数据从数据库引擎传输到另一个而不会在下次丢失?

3-对于PostgreSQL我不能使用空白密码,它说fe_sendauth: no password supplied,添加密码后这个错误消失了,在另一个数据库引擎中使用密码而不是Sqlite3是必须的吗?

4-如果我在开发中使用另一个数据库引擎,heroku 是否也需要重置或类似 Github 会接受数据?

4

4 回答 4

4

这个 Railscast 是一个很好的迁移资源,应该回答你的大部分问题:

http://railscasts.com/episodes/342-migrating-to-postgresql

于 2013-08-09T15:11:45.253 回答
3

那么,您所说的是您丢失了 sqlite3 数据库中的数据吗?这不应该发生。您是否更改了配置文件夹中的 database.yml 以将您的应用程序指向新的 Postgres 数据库?如果您确实将其指向新数据库,那么您不应该丢失 sqlite3 数据库中的任何数据,因为应用程序不再访问它。

如果您确实更改了数据库配置以使用新数据库,那么您可能没有丢失任何数据。我希望是这样。:)

1-为什么我被迫使用 rake db:reset ?

我认为您不必在新数据库上运行 rake db:reset ,除非您的迁移文件搞砸了。

2-有没有办法将我的数据从数据库引擎传输到另一个而不会在下次丢失?

您可以创建一个 rake 任务或指向两个数据库实例(旧的和您要迁移到的新实例)的脚本。然后,您可以从旧数据库中提取数据,然后根据需要处理数据(每个 RDBM 都有自己的细微语法差异)并将它们加载到新数据库。

3-对于PostgreSQL我不能使用空白密码,它说fe_sendauth:没有提供密码,添加密码后这个错误消失了,在另一个数据库引擎中使用密码而不是Sqlite3是必须的吗?

这取决于您如何设置您创建的 Postgres 数据库实例...

4-如果我在开发中使用另一个数据库引擎,heroku 是否也需要重置或类似 Github 会接受数据?

在 Heroku 上设置数据库非常简单。您所要做的就是:

heroku crate your-app-name
git push heroku master
heroku run db:migrate

但是,我认为您的迁移文件存在一些问题。尽管如此,您实际上可以在 Heroku 上为您的数据库获取用户名/密码,然后使用您的脚本将数据从本地数据库推送到它。

我希望这有帮助!

于 2013-08-09T15:57:52.613 回答
1

如果您使用的是 Devise,您可以使用以下方法重新加载您的用户帐户信息:

rake db:seed
于 2013-11-27T09:41:44.787 回答
0

查看本指南https://www.digitalocean.com/community/tutorials/how-to-set-up-ruby-on-rails-with-postgres以便您可以通过更改 database.yml 手动重新创建流程和宝石文件。

如果您需要迁移数据库信息,请运行

pgloader ./production.sqlite3 postgres://username:password@localhost/database

检查https://migara.li/2017/07/24/migrating-from-sqlite-to-postgres/

水龙头等其他替代方法现在不起作用 http://railscasts.com/episodes/342-migrating-to-postgresql

于 2019-09-25T07:25:27.007 回答