我有一个在线的网站,人们正在积极地添加内容。但是,我不得不在开发环境中进行一些更改,这花了我几个星期的时间。所做的更改要求安装新模块,并删除旧模块,这当然更改了数据库的内容和结构。
我的问题是如何将该网站上传回实时环境并更新数据库,而不会覆盖过去两周内添加的新用户的新内容?
我有一个在线的网站,人们正在积极地添加内容。但是,我不得不在开发环境中进行一些更改,这花了我几个星期的时间。所做的更改要求安装新模块,并删除旧模块,这当然更改了数据库的内容和结构。
我的问题是如何将该网站上传回实时环境并更新数据库,而不会覆盖过去两周内添加的新用户的新内容?
Answers:
托马斯·扎雷丁(Thomas Zahreddin)是对的。但是,根据发生的变化(“花了我几周的时间……”),还有更多的事情要考虑。
settings.php
。如果您没有琐碎的案件,我建议您事先对您的程序进行测试。当然,在启动实时系统之前,请先备份文件和数据。(“ 备份和迁移”在这里很方便。)
您必须检查要更改的内容:
更新Drupal网站时,我有相同的处理程序。最大的问题是Drupal在将内容和逻辑保持在其数据库中的分离方面并没有真正做得很好。
Thomas Zagreddin和BetaRide给出的答案足以为您提供成功完成迁移的最佳机会。在这个问题上确实没有圣杯。
我想给您一个开发技巧,但是这使我在保持我们的网站最新性方面省去了很多麻烦:尝试在代码(模块/主题)中尽可能地保持逻辑。像一样,尽量避免创建视图。有时您必须这样做,但这需要另一次数据库更新...
使用源代码管理管理!
如果您能够将所有内容保留在代码中(当然,您将永远无法做到这一点),则只需使用Git,SubVersion或Mercury之类的SCM 来更新源代码,在最坏的情况下,请还原为如果更新未按计划进行,则源的先前版本。
并且,当然,如先前答案中所述:备份,备份,备份,备份...
我只是有同样的问题。为了解决这个问题,我注意到我仅有的现场内容(而不是开发人员)是新的用户详细信息。我只是进入admin的People选项卡,并将人员详细信息复制到开发人员中。在开发人员中,我只是在没有任何自动化的情况下输入了它们。因此,下次我从开发人员处上传时,人员详细信息自然将是正确的,并且不会被覆盖。