yiissy001 2015-07-09 10:24:21 4847次浏览 3条评论 2 4 0

我很早就知道yii有个叫migrations的东西,但一直不觉得有什么意义,今天看到这篇引文文章很好的说明了migrations的意义,我试着翻译一下:

首先,我们为什么需要migrations呢?
很久以来,PHP一直没有一种机制把项目最新的DB结构同时同步到不同的机器上.
很多时候我们是卸掉原来的DB结构再把最新的DB结构导进来.
如果某人修改了数据库结构,那么我们不得不把修改的SQL文件在所有不同的机器上跑一遍.而且这个修改者可能要一个一个得通知到所有人(实际情况可能要好点).
现在YII提供了一个管理我们DB结构的方法.我们不需要浪费时间和精力来维护我们的DB结构了.
以下是在开发过程中使用migrations的步骤:

1.Tim创建了一个新的migration(比如创建了一个新的表)
2.Tim把这个migration通过代码管理工具(SVN,GIT等)提交到代码管理服务器.
3.Doug update了他的代码,拿到了这个migration.
4.Doug(无脑地)使用了这个migration,然后他本地的数据库结构就和其他人的保持一致了.

使用migration

% cd WebRoot/webappname
% php protected/yiic migrate create <name>
# Migration command list
% php protected/yiic migrate                      # 应用所有的新的migration
% php protected/yiic up [step]                    # 应用一个或多个migration
% php protected/yiic down [step]                  # 回滚一个或多个已经应用的migration

原文地址: http://www.cnblogs.com/mztest/archive/2012/10/15/2724367.html

文章比较老,使用方法可能已失效,实际使用时请参考教程.

觉得很赞
  • 评论于 2015-07-10 02:52 举报

    突然顿悟了

    觉得很赞
  • 评论于 2015-07-10 10:54 举报

    这样确实挺方便的。
    现在项目时间一长, migrations 文件就特别多。

    2 条回复
    评论于 2015-09-16 14:46 回复

    是不是每个表都有一个这样的文件 ,如果有某个人修改了数据表,把svn上面的文件down下来就可以吗

    评论于 2015-09-17 10:58 回复

    可以把migrations想象成数据库结构的同步工具,migrations里保存的是对数据库结构的操作(当然migrations也可以做增删改查,但主要用途不是这个),目的是同步开发机上的DB结构和方便部署

  • 评论于 2015-09-21 16:49 举报

    仅仅这个作用的话,直接到处sql不行吗?

您需要登录后才可以评论。登录 | 立即注册