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开始运行的主要内容,如果未能解决你的问题,请参考以下文章