linux yii 数据库迁移,Yii数据库迁移

Yii提供以下迁移命令行工具-

创建新的迁移

恢复迁移

应用迁移

重新申请迁移

显示迁移状态和历史记录

创建迁移

现在创建一个新的数据库迁移。

第1步-在基本应用程序模板项目根目录内打开控制台窗口并运行。

c:>baisc> yii migrate/create add_news_table

上面的命令将在migrations文件夹中创建的新的迁移文件(本示例中生成的是:m160605_040139_add_news_table.php)。

该文件包含下面的代码-

每个数据迁移是扩展了yiidbMigration类的PHP类。类名是按以下格式生成的-

m_

其中是指迁移命令被执行的UTC日期时间和是在控制台命令提供的参数。

当升级数据库时up()方法被调用,而当降级时down()方法被调用。

第2步-对新表添加到数据库,使用以下方式来修改migration文件。

<?php use yiidbSchema; use yiidbMigration; class m160605_040139_add_news_tableextends Migration { public function up() { $this->createTable("news", [ "id" => Schema::TYPE_PK, "title" => Schema::TYPE_STRING, "content" => Schema::TYPE_TEXT, ]); } public function down() { $this->dropTable('news'); } /* // Use safeUp/safeDown to run migration code within a transaction public function safeUp() { } public function safeDown() { } */ } ?>

在上面的代码中,我们创建了一个news的新表在up()方法,并在down()方法删除此表。

该news表由三个字段组成:id,title和content 。当创建一个表或列,我们应该用抽象类型以便迁移时它转为数据库的类型。例如,在MySQL中,TYPE_PK将被转换成int(11)NOTNULAUTO_INCREMETNPRIMARYKEY。

第3步-升级数据库,运行此命令。

c:>basic> yii migrate

22519107f6f9cc428d9e3f66914e1f05.png 上面的命令将列出尚未提交过的所有可用的应用迁移。然后,如果确认提交迁移,它将在所有新的migration类中运行safeUp()或up()。

第4步-只有三个可用的迁移可以提交运行。

c:>basic> yii migrate 3

第5步-也可以定义一个特定迁移将数据库迁移。

#使用时间戳来指定迁移

c:>basic> yii migrate/to 160606_105608

#使用能够通过strtotime()来解析的字符串。

c:>basic> yii migrate/to "2016-06-06 19:35:21"

# 使用全名

c:>basic> yii migrate/to m160606_193521_create_news_table

# 使用 UNIX timestamp

c:basic> yii migrate/to 1399964718

第6步-要恢复迁移(执行down()或safeDown()方法)并运行。

c:basic> yii migrate/down

第7步-只能最多恢复5个最近使用的应用的迁移,可以运行以下命令:

c:>basic> yii migrate/down 5

c404409684f512b81b2b842d97b6c458.png 第8步-要重做(恢复,然后重新提交)迁移,运行。

c:basic> yii migrate/redo

e8ce61412275cfbf53b08e7550188ca6.png 要列出已经应用的迁移,可以使用这些命令-

yii migrate/new#显示前10个新迁移

yii migrate/new 3# 显示出前3个新迁移

yii migrate/new all#显示所有新迁移

yii migrate/history#显示最近10个提交应用迁移

yii migrate/history 20#显示最近20个提交应用迁移

yii migrate/history all#显示所有的应用迁移

有时需要添加一列或从一个特定的表中删除列。可以使用addColumn()和dropColumn()方法。

第1步-创建一个新的迁移。

c:>basic> yii migrate/create add_category_to_news

第2步-修改新创建的migration文件并使用以下代码。

<?php use yiidbSchema; use yiidbMigration; class m160113_110909_add_category_to_news extends Migration { public function up() { $this->addColumn('news', 'category', $this->integer()); } public function down() { $this->dropColumn('news', 'category'); } } ?>

现在,如果运行yiimigrate,category字段列应该被添加到news表中。

相反,如果运行yiimigrate/down1,category字段栏应被丢弃(删除)。

当执行数据库迁移,重要的是要确保每个迁移成功或失败。建议在数据库操作中使用事务处理。要实现事务迁移,需要把迁移代码放在safeUp()和safeDown()方法中。如果这些方法中的任何操作失败,所有以前的操作将被回滚。

在之前的实例中,使用“事务方式”如下所示:

<?php use yiidbSchema; use yiidbMigration; class m160113_110909_add_category_to_news extends Migration { public function safeUp() { $this->addColumn('news', 'category', $this->integer()); } public function safeDown() { $this->dropColumn('news', 'category'); } } ?>

yiidbMigration类为操作数据库提供了下面的方法-

execute()−执行原始的SQL语句

createTable()− 创建一个表

renameTable()− 重命名表

insert()− 插入一行

batchInsert()− 插入多行

update()− 更新多行

delete()− 删除多行

addColumn()− 添加一列

renameColumn()− 重命名一列

dropColumn()− 删除一列

alterColumn()− 修改一列

dropTable()− 删除一个表

truncateTable()−删除表中的所有行

createIndex()− 创建一个索引

dropIndex()− 删除一个索引

addPrimaryKey()− 添加主键

dropPrimaryKey()−删除主键

addForeignKey()−添加一个外键

dropForeignKey()−删除一个外键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值