Mysql
 sql >> Database >  >> RDS >> Mysql

Esegui SQL grezzo durante la migrazione

Il problema (come ha detto @postashin) erano i backtick.

A partire da Laravel 5 (non sono sicuro di Laravel 4), avresti potuto farlo:

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

In effetti non avevi nemmeno bisogno delle zecche posteriori in quanto non hanno bisogno di scappare. Quindi avresti potuto semplicemente scrivere:

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

Non ne hai bisogno nemmeno nella chiusura se stai solo eseguendo un'istruzione di database.

Tuttavia, un approccio migliore a ciò che stai facendo è il seguente:

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

Nota che l'ultima soluzione a volte può generare un errore a causa di un bug in Doctrine, che di solito si verifica se hai un enum nella tabella (non solo la colonna che stai modificando).

Per ulteriori informazioni, vedere Migrazione del database Laravel - Modifica della colonna