2016-04-01 1 views
1

Ich versuche, eine Transaktion zu erstellen, wenn ich die Methode Schema :: create verwenden, aber es funktioniert nicht.In meiner Anwendung muss ich dynamische Tabelle auf einer anderen DB erstellen und im Fehlerfall ich muss zurückrollen. Laravel startet Ausnahme, aber das Rollback funktioniert nicht. Ich benutze Laravel 5.1Transaktion Laravel-Schema erstellen

+0

Versuchen Sie, Composer Dumpauto und dann Rollback auszuführen. –

Antwort

0

Ich nehme an, Sie verwenden MySQL. DDL-Anweisungen (Tabelle erstellen, Tabelle ändern usw.) können in Transaktionen nicht zurückgesetzt werden.

Vom docs:

Einige Aussagen können nicht rückgängig gemacht werden. Dazu gehören im Allgemeinen DDL-Anweisungen (Datendefinitionssprache), z. B. zum Erstellen oder Löschen von Datenbanken, zum Erstellen, Löschen oder Ändern von Tabellen oder gespeicherten Routinen.

Sie sollten Ihre Transaktionen so gestalten, dass sie solche Anweisungen nicht enthalten. Wenn Sie eine Anweisung früh in einer Transaktion ausgeben, die nicht rückgängig gemacht werden kann, und später eine andere Anweisung fehlschlägt, kann die vollständige Auswirkung der Transaktion in solchen Fällen nicht durch Ausführen einer ROLLBACK-Anweisung zurückgesetzt werden.