yii migrate / up始终从start开始运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii migrate / up始终从start开始运行相关的知识,希望对你有一定的参考价值。

当我在postgres驱动程序上创建新的迁移后运行下面的命令时,我收到错误迁移表已经存在。

./yii migrate

但是,创建“迁移”表的第一次迁移已成功完成。

Error Info:
Array
(
    [0] => 42P07
    [1] => 7
    [2] => ERROR:  relation "migration" already exists
)

似乎Yii2尝试从每次启动开始运行所有迁移,因为在新迁移中我正在创建其他表。它仍然抱怨迁移表丢失。

答案

我找到了一个使用web ui的Yii2应用程序的解决方案:

web/index.php中添加:

// Check if migration is required
$migrateHint = __DIR__.'/../runtime/do_migration';
if (file_exists($migrateHint)) {
    exec('php '.__DIR__.'/../yii migrate/up --interactive=0',$output,$exitCode);
    if ($exitCode || !@unlink($migrateHint)) {
        echo "migration failed. exitCode=$exitCode. Try again.
";
        exit(1);
    }
}

使用exec的原因是:Yii2-App尚未初始化且无法使用。

不要忘记将__DIR__.'/../runtime/migration_ready作为文件添加到您的git仓库(内容无关紧要)。因此,每次签出新版本时,都会启动迁移。

以上是关于yii migrate / up始终从start开始运行的主要内容,如果未能解决你的问题,请参考以下文章

Yii2中如何使用Migration创建复合主键?

yii migrate 数据迁移过程

Yiic和migrate

Yii 2 migration 给表添加字段

Yii2之数据库迁移(migrate)

Yii2之数据库迁移(migrate)