yii2 mysql 版本_yii2 数据库版本控制 migrations

对于在日常的开发,我们用mysql,当线下分几个小组对一个网站进行开发的时候,在线下建立表,如何同步到线上就成了一个问题。

svn git等版本控制系统,可以控制文件的版本,yii2通过migrate,来进行sql文件的上传,以及执行。

migrate的使用:

1.首先创建migrate文件,语法很简单:

./yii migrate/create test_user

执行后,就会在/console/migrations/下面生成m160511_080937_test_user.php。

下面是执行log

[root@services datacenter_1000]# ./yii migrate/create test_user

Yii Migration Tool (based on Yii v2.0.7)

Create new migration '/www/web/datacenter/datacenter_1000/console/migrations/m160511_080937_test_user.php'? (yes|no) [no]:yes

New migration created successfully.

默认的路径是在console/migrations下面。

如果执行 ./yii migrate   就会执行console/migrations 下面的sql,当然,在执行前,需要到表migration 中查看信息,然后在决定执行那些sql,执行的是文件中的up()方法里面的sql,如果是事务操作,则不适用up(),而使用safeUp()方法。

有时候我们有自己的扩展,然后把migration放到自己的扩展里面,可以通过加入参数–migrationPath=@yii/log/migrations

来创建,执行相应的数据库脚本、

./yii migrate --migrationPath=@yii/log/migrations/

同样 down() , 采用 safeDown()方法。

如下是所有这些数据库访问方法的列表:

yii\db\Migration::execute(): 执行一条 SQL 语句

yii\db\Migration::insert(): 插入单行数据

yii\db\Migration::batchInsert(): 插入多行数据

yii\db\Migration::update(): 更新数据

yii\db\Migration::delete(): 删除数据

yii\db\Migration::createTable(): 创建表

yii\db\Migration::renameTable(): 重命名表名

yii\db\Migration::dropTable(): 删除一张表

yii\db\Migration::truncateTable(): 清空表中的所有数据

yii\db\Migration::addColumn(): 加一个字段

yii\db\Migration::renameColumn(): 重命名字段名称

yii\db\Migration::dropColumn(): 删除一个字段

yii\db\Migration::alterColumn(): 修改字段

yii\db\Migration::addPrimaryKey(): 添加一个主键

yii\db\Migration::dropPrimaryKey(): 删除一个主键

yii\db\Migration::addForeignKey(): 添加一个外键

yii\db\Migration::dropForeignKey(): 删除一个外键

yii\db\Migration::createIndex(): 创建一个索引

yii\db\Migration::dropIndex(): 删除一个索引

有时,你可能只需要提交一个或者少数的几个迁移,你可以使用该命令指定需要执行的条数,而不是执行所有的可用迁移。例如,如下命令将会尝试提交前三个可用的迁移:

yii migrate 3

你也可以指定一个特定的迁移,按照如下格式使用 migrate/to 命令来指定数据库应该提交哪一个迁移:

yii migrate/to 150101_185401 # using timestamp to specify the migration 使用时间戳来指定迁移

yii migrate/to "2015-01-01 18:54:01" # using a string that can be parsed by strtotime() 使用一个可以被 strtotime() 解析的字符串

yii migrate/to m150101_185401_create_news_table # using full name 使用全名

yii migrate/to 1392853618 # using UNIX timestamp 使用 UNIX 时间戳

其他:来自于官网资料。

还原迁移

你可以使用如下命令来还原其中一个或多个意见被提交过的迁移:

yii migrate/down # revert the most recently applied migration 还原最近一次提交的迁移

yii migrate/down 3 # revert the most 3 recently applied migrations 还原最近三次提交的迁移

重做迁移

重做迁移的意思是先还原指定的迁移,然后再次提交。如下所示:

yii migrate/redo # redo the last applied migration 重做最近一次提交的迁移

yii migrate/redo 3 # redo the last 3 applied migrations 重做最近三次提交的迁移

列出迁移

你可以使用如下命令列出那些提交了的或者是还未提交的迁移:

yii migrate/history # 显示最近10次提交的迁移

yii migrate/history 5 # 显示最近5次提交的迁移

yii migrate/history all # 显示所有已经提交过的迁移

yii migrate/new # 显示前10个还未提交的迁移

yii migrate/new 5 # 显示前5个还未提交的迁移

yii migrate/new all # 显示所有还未提交的迁移

修改迁移历史

有时候你也许需要简单的标记一下你的数据库已经升级到一个特定的迁移,而不是实际提交或者是还原迁移。这个经常会发生在你手动的改变数据库的一个特定状态,而又不想相应的迁移被重复提交。那么你可以使用如下命令来达到目的:

yii migrate/mark 150101_185401 # 使用时间戳来指定迁移

yii migrate/mark "2015-01-01 18:54:01" # 使用一个可以被 strtotime() 解析的字符串

yii migrate/mark m150101_185401_create_news_table # 使用全名

yii migrate/mark 1392853618 # 使用 UNIX 时间戳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值