无需重置现有数据库即可将新 table 推送到 heroku
Push new table to heroku without having to reset existing database
我正处于学习 RoR 和使用 Heroku 的早期阶段。所以我有一个带有本地和生产数据库的初出茅庐的应用程序。我已经使用 pg:push
创建初始生产数据库,但我很欣赏这需要您每次都重置数据库。我现在在我的本地数据库中有一个新的 table,我希望将其推送到生产环境,但我不想重置并丢失数据。
看来我可以从生产环境创建一个备份,然后重新加载它。或者可以 if 运行 pg:pull
将数据放入我的本地数据库,然后 运行 a pg:push
这样当我添加新的 table 我是还要重新加载我现有的数据。
这一切似乎有点啰嗦。根据 php 和 mysql 的一些知识,我会简单地 运行 一个 SQL 查询来添加新的 table,没有类似的方法吗?
我想你要搜索的是迁移:
class CreateProducts < ActiveRecord::Migration[5.0]
def change
create_table :products do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
您可以在本地开发环境中创建迁移,然后在您满意后 运行 在生产服务器上创建它们。您可以在此处阅读有关迁移的更多信息:
一个选项是使用 pg_dump 和 --table
选项来只转储一个 table。将其保存到 .sql
文件,然后 运行 将其保存到要导入的数据库中。
一般来说,不建议将数据从开发手动移植到生产。您可能已经注意到,迁移使您的数据库 结构 保持同步,但不会同步数据。
如果您的应用程序需要一组特定的数据库值,并且您想在任何环境中设置这些值;你可以设置seed data。然后是 运行ning heroku run rake db:seed
将数据投入生产的简单案例。
我正处于学习 RoR 和使用 Heroku 的早期阶段。所以我有一个带有本地和生产数据库的初出茅庐的应用程序。我已经使用 pg:push
创建初始生产数据库,但我很欣赏这需要您每次都重置数据库。我现在在我的本地数据库中有一个新的 table,我希望将其推送到生产环境,但我不想重置并丢失数据。
看来我可以从生产环境创建一个备份,然后重新加载它。或者可以 if 运行 pg:pull
将数据放入我的本地数据库,然后 运行 a pg:push
这样当我添加新的 table 我是还要重新加载我现有的数据。
这一切似乎有点啰嗦。根据 php 和 mysql 的一些知识,我会简单地 运行 一个 SQL 查询来添加新的 table,没有类似的方法吗?
我想你要搜索的是迁移:
class CreateProducts < ActiveRecord::Migration[5.0]
def change
create_table :products do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
您可以在本地开发环境中创建迁移,然后在您满意后 运行 在生产服务器上创建它们。您可以在此处阅读有关迁移的更多信息:
一个选项是使用 pg_dump 和 --table
选项来只转储一个 table。将其保存到 .sql
文件,然后 运行 将其保存到要导入的数据库中。
一般来说,不建议将数据从开发手动移植到生产。您可能已经注意到,迁移使您的数据库 结构 保持同步,但不会同步数据。
如果您的应用程序需要一组特定的数据库值,并且您想在任何环境中设置这些值;你可以设置seed data。然后是 运行ning heroku run rake db:seed
将数据投入生产的简单案例。