Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Executar SQL bruto na migração


O problema (como @postashin disse) foram os backticks.

A partir do Laravel 5 (não tenho certeza sobre o Laravel 4), você poderia ter feito isso:
DB::statement('ALTER TABLE `users` MODIFY `age` DATETIME');

Na verdade, você nem precisava dos tiques nas costas, pois eles não precisam escapar. Então você poderia ter apenas escrito:
DB::statement('ALTER TABLE users MODIFY age DATETIME');

Você também não precisa disso no encerramento se estiver apenas executando uma instrução de banco de dados.

No entanto, uma abordagem melhor para o que você está fazendo é a seguinte:
Schema::table('users', function(Blueprint $table) {
    $table->dateTime('age')->change();
});

Observe que a última solução às vezes pode gerar um erro devido a um bug no Doctrine, que geralmente ocorre se você tiver um enum na tabela (não apenas na coluna que você está alterando).

Para obter mais informações, consulte Migração do banco de dados Laravel - Coluna de modificação