Php 开发与生产数据库

Php 开发与生产数据库,php,mysql,codeigniter,deployment,Php,Mysql,Codeigniter,Deployment,如果您使用的是开发服务器,同时也是实时生产服务器,那么将开发服务器上发生的任何数据库更改迁移到实时服务器的最佳方法是什么 我的基础是PHP和CI迁移,迁移管理对于DB代码版本更改管理来说是一个巨大而复杂的问题。没有一篇短文能很好地说明这一点,但我要说的是 通常,如果您使用类似于ORM的Eloquent或framework,那么他们有一个迁移机制,如果更新了模式和模型代码,您可以在开发数据库上运行迁移。然后,当您实时推送代码时,您将在实时服务器上运行它 正如您在文章的评论中所指出的,有许多第三方工

如果您使用的是开发服务器,同时也是实时生产服务器,那么将开发服务器上发生的任何数据库更改迁移到实时服务器的最佳方法是什么


我的基础是PHP和CI迁移,迁移管理对于DB代码版本更改管理来说是一个巨大而复杂的问题。没有一篇短文能很好地说明这一点,但我要说的是

通常,如果您使用类似于ORM的Eloquent或framework,那么他们有一个迁移机制,如果更新了模式和模型代码,您可以在开发数据库上运行迁移。然后,当您实时推送代码时,您将在实时服务器上运行它

正如您在文章的评论中所指出的,有许多第三方工具,但对于大多数基本情况,您可以使用简单的迁移文件来管理更改。但是,如果您对数据库进行了与代码无关的更改,如索引更改或数据添加/删除,则工具非常有用。以下是MySQL自己的工具:

现在我假设您正在使用某种版本控制,因此,如果您不是一个具有内置迁移支持工具的orm,您可以简单地为给定提交级别的代码保留一个sql迁移脚本目录。将开发分支代码合并到生产分支并实时推送时,请在生产数据库上运行迁移alter table脚本。这些脚本应该包含所有的修改和手动插入。然后,您可以保留一个迁移表,并跟踪已运行的迁移脚本

为了获得额外的积分,您可以创建迁移的回滚版本。通过这种方式,您可以在返回到以前的代码版本之前应用(当您可能需要回滚生产版本以处理错误或其他问题时)。然后,在没有合作伙伴回滚的情况下,永远不要提交迁移

例如,如果我将新属性添加到用户类address2:

迁移\u 1\u将\u地址\u 2\u添加到\u user.sql

 alter table user add column address2 varchar(64);
回滚\u 1\u将\u地址\u 2\u添加到\u user.sql

   alter table user drop column address2;

祝你好运

为您所做的任何DB更改创建升级脚本,然后在live server上运行它们。查看。有一些工具可以自动在两个环境之间同步DB模式。