2017-01-21 2 views
2

Wenn ich unter Befehl nach dem Erstellen neuer Migration auf Postgres-Treiber ausführen, bekomme ich Fehler Migrationstabelle existiert bereits.yii migrieren/up läuft immer von Anfang

./yii migrate 

Die erste Migration, die die Tabelle "Migration" erstellt hat, wurde jedoch bereits erfolgreich abgeschlossen.

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

Es scheint Yii2 versucht, alle mit der Migration von Anfang jedes Mal ausgeführt werden, da in neuen Migrations ich eine andere Tabelle erschaffe. Es beschwert sich immer noch über fehlende Migrationstabellen.

+0

Verwenden Sie separate Dateien für jede Tabelle –

+0

ja, für jede Tabelle gibt es separate Migrationsdatei erstellt von ./yii migrate/create Shrikant

Antwort

1

fand ich eine Lösung für Yii2 Anwendungen mit Web-ui:

// 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 || [email protected]($migrateHint)) { 
     echo "migration failed. exitCode=$exitCode. Try again.\n"; 
     exit(1); 
    } 
} 

Der Grund exec für die Verwendung ist:

In web/index.php fügen Sie einfach die Yii2-App noch nicht initialisiert ist und nicht verwendet werden kann, .

Vergessen Sie nicht, __DIR__.'/../runtime/migration_ready als Datei zu Ihrem Git Repo hinzufügen (Inhalt spielt keine Rolle). Jedes Mal, wenn Sie eine neue Version auschecken, wird die Migration gestartet.