Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Führen Sie bei der Migration unformatiertes SQL aus

Das Problem (wie @postashin sagte) waren die Backticks.

Ab Laravel 5 (bei Laravel 4 nicht sicher) hätten Sie Folgendes tun können:

DB::statement('ALTER TABLE `users` MODIFY `age` DATETIME');

Tatsächlich brauchten Sie nicht einmal die hinteren Zecken, da sie nicht entkommen müssen. Sie hätten also einfach schreiben können:

DB::statement('ALTER TABLE users MODIFY age DATETIME');

Sie brauchen dies auch nicht in der Closure, wenn Sie nur eine Datenbankanweisung ausführen.

Ein besserer Ansatz für das, was Sie tun, ist jedoch wie folgt:

Schema::table('users', function(Blueprint $table) {
    $table->dateTime('age')->change();
});

Beachten Sie, dass die letzte Lösung manchmal aufgrund eines Fehlers in Doctrine einen Fehler auslösen kann, der normalerweise auftritt, wenn Sie eine Aufzählung in der Tabelle haben (nicht nur die Spalte, die Sie ändern).

Weitere Informationen finden Sie unter Migration der Laravel-Datenbank – Ändern von Spalten