Yii2 數據庫版本控制 migrate 轉

對於在日常的開發,我們用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 時間戳

 

yii2數據庫遷移

yii2自定義遷移-使用命令行選項

yiiframework

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章