W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
遷移是一種非常方便的途徑來組織和管理你的數(shù)據(jù)庫(kù)變更,當(dāng)你編寫了一小段 SQL 對(duì)數(shù)據(jù)庫(kù)做了修改之后,你就需要告訴其他的開發(fā)者他們也需要運(yùn)行這段 SQL , 而且當(dāng)你將應(yīng)用程序部署到生產(chǎn)環(huán)境時(shí),你還需要記得對(duì)數(shù)據(jù)庫(kù)已經(jīng)做了哪些修改, 需要執(zhí)行哪些 SQL 。
在 CodeIgniter 中,migration 表記錄了當(dāng)前已經(jīng)執(zhí)行了哪些遷移,所以 你需要做的就是,修改你的應(yīng)用程序文件然后調(diào)用$this->migration->current() 方法遷移到當(dāng)前版本,當(dāng)前版本可以在 application/config/migration.php 文件中進(jìn)行設(shè)置。
每個(gè)遷移都是根據(jù)文件名中的數(shù)字順序向前或向后運(yùn)行,有兩種不同的數(shù)字格式:
可以在 application/config/migration.php 文件中的 $config['migration_type'] 參數(shù)設(shè)置命名規(guī)則。
無論你選擇了哪種規(guī)則,將這個(gè)數(shù)字格式作為遷移文件的前綴,并在后面添加一個(gè)下劃線, 再加上一個(gè)描述性的名字。如下所示:
這里是一個(gè)新博客站點(diǎn)的第一次遷移的例子,所有的遷移文件位于 application/migrations/ 目錄, 并命名為這種格式:20121031100537_add_blog.php 。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Add_blog extends CI_Migration {
public function up()
{
$this->dbforge->add_field(array(
'blog_id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'blog_title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
'blog_description' => array(
'type' => 'TEXT',
'null' => TRUE,
),
));
$this->dbforge->add_key('blog_id', TRUE);
$this->dbforge->create_table('blog');
}
public function down()
{
$this->dbforge->drop_table('blog');
}
}
然后在 application/config/migration.php 文件中設(shè)置:$config['migration_version'] = 20121031100537;
在這個(gè)例子中,我們?cè)?nbsp;application/controllers/Migrate.php 文件中添加如下的代碼來更新數(shù)據(jù)庫(kù):
<?php
class Migrate extends CI_Controller
{
public function index()
{
$this->load->library('migration');
if ($this->migration->current() === FALSE)
{
show_error($this->migration->error_string());
}
}
}
下表為所有可用的遷移參數(shù)。
參數(shù) | 默認(rèn)值 | 可選項(xiàng) | 描述 |
---|---|---|---|
migration_enabled | FALSE | TRUE / FALSE | 啟用或禁用遷移 |
migration_path | APPPATH.'migrations/' | None | 遷移目錄所在位置 |
migration_version | 0 | None | 當(dāng)前數(shù)據(jù)庫(kù)所使用版本 |
migration_table | migrations | None | 用于存儲(chǔ)當(dāng)前版本的數(shù)據(jù)庫(kù)表名 |
migration_auto_latest | FALSE | TRUE / FALSE | 啟用或禁用自動(dòng)遷移 |
migration_type | 'timestamp' | 'timestamp' / 'sequential' | 遷移文件的命名規(guī)則 |
classCI_Migration
current()
返回: TRUE if no migrations are found, current version string on success, FALSE on failure
返回類型: mixed
遷移至當(dāng)前版本。(當(dāng)前版本通過 application/config/migration.php 文件的 $config['migration_version'] 參數(shù)設(shè)置)
error_string()
返回: Error messages
返回類型: string
返回遷移過程中發(fā)生的錯(cuò)誤信息。
find_migrations()
返回: An array of migration files
返回類型: array
返回 migration_path 目錄下的所有遷移文件的數(shù)組。
latest()
返回: Current version string on success, FALSE on failure
返回類型: mixed
這個(gè)方法和 current() 類似,但是它并不是遷移到 $config['migration_version'] 參數(shù)所對(duì)應(yīng)的版本,而是遷移到遷移文件中的最新版本。
version($target_version)
參數(shù):
返回: TRUE if no migrations are found, current version string on success, FALSE on failure
返回類型: mixed
遷移到特定版本(回退或升級(jí)都可以),這個(gè)方法和 current() 類似,但是忽略 $config['migration_version'] 參數(shù),而是遷移到用戶指定版本。
$this->migration->version(5);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: