从这个项目:什么是最好的Drupal部署策略?.... 我引用:
数据库比较棘手; 清理开发/暂存数据库并将其推送到最初是最容易的,但如果实时站点上的用户也在生成内容,那么在进行增量数据库更新时会有一些问题.
我想要一些关于如何做到这一点的想法?目前,我在本地计算机上获得了现有数据库的完整副本,提交了该subversion,然后部署整个数据库.目前该文件是15megs,每次我必须上传整个文件(我认为subversion将其视为一个完整的新文件,因为它每次都有很多变化).
所以,我的问题是:
Jer*_*nch 13
有没有其他方法可以保持我的数据库和服务器数据库同步?特别是考虑到用户会一直发布新数据?
我们在任何地方都有一个庞大的分布式团队和编辑人员,因此部署数据库是不可行的.
为了解决这个问题,我们广泛使用了更新功能.我们有一个没有实际代码的模块,我们用它来更新设置.每次开发人员进行配置更改时,他们都会在此模块中编写更新函数,该函数在运行时将对其他开发DB进行相应的更改,暂存和生效.
存在一些问题,尤其是交叉依赖性(如果人们在多个模块中编写更新函数),并且编写管理员中相对较小的更改可能需要一些时间.安装配置文件api有助于此.
例如
function mysite_update_6000() {
install_include(array('user'));
$editor_rid = install_add_role('editor');
install_add_permissions(DRUPAL_ANONYMOUS_RID, array('do something'));
install_add_permissions($editor_rid, array('do something', 'administer nodes'));
return array();
}
Run Code Online (Sandbox Code Playgroud)
将添加角色并为其分配一些权限.这样做可以保留代码中的所有更改,这样您就不必尝试迁移和同步数据库.
还有一个迁移模块可以帮助解决这个问题,它会将更改记录到表中并将它们保存到更新功能中.不要将其与用于内容迁移的drupal.org迁移模块相混淆.
我们已经取得了一些成功,但也有一些功能模块的问题,这可以帮助迁移功能.