我有一个数据库,我使用Rails 3.2中的开发环境创建并填充。我使用git和phusion乘客将数据库部署到服务器上。目前,服务器仍在运行开发数据库,因为它是已填充的数据库。我有两个问题:
1)如果我将服务器切换到生产环境,我的所有数据都会转移吗?如果没有,如何将当前数据传输到生产数据库?
2)如果我使用开发数据库从我的个人计算机推送服务器的更新,并且服务器正在使用生产数据库,那么用户输入生产数据库的所有数据是否都会保持原状?或者,当我从git将项目拉到服务器时,是否必须将其配置为不擦除数据?
答案 0 :(得分:2)
对于第一个问题:
如果将环境更改为生产环境,它将使用config/database.yml
文件中配置的数据库。如果要在生产中使用相同的数据库,可以备份开发数据库并导入备份文件。
对于第二个问题:
通过术语从我的个人计算机推送服务器更新,我假设您正在讨论推送的代码更改而不是任何与数据库相关的事情。使用git进行拉/推操作绝不会影响您与数据库交互的方式。生产数据库中用户的数据将保持不变。
答案 1 :(得分:0)
1)如果我将服务器切换到生产环境,我的所有数据都会转移吗?如果没有,如何将当前数据传输到生产数据库?
默认情况下通常不会。 database.yml文件有一个用于开发,测试和生产的组。开发和测试往往是本地的,生产(希望)不会出现在本地机器上。
2)如果我使用开发数据库从我的个人计算机推送服务器更新,并且服务器正在使用生产数据库,那么用户输入生产数据库的所有数据都将保留在圆通?或者,当我从git将项目拉到服务器时,是否必须将其配置为不擦除数据?
实际数据应该保持一致,但是,请记住让您的迁移与那里的数据兼容。这里要注意的一件大事是在现有表中添加必填字段而不处理重新填充先前的记录。这将破坏您的部署。
您可以使用您的环境资源从生产中获取数据库/将其发回(我认为Heroku使用pg:dump)。
写下您对GhostRider答案的评论,您是否从开发中远程使用生产数据库?/您的部署在哪里?你的database.yml文件是什么样的? (记住不要包含你的密码:D,我会在回复时更新答案)。