sql >> Database >  >> RDS >> Mysql

Ruwe SQL uitvoeren tijdens migratie

Het probleem (zoals @postashin zei) waren de backticks.

Vanaf Laravel 5 (niet zeker van Laravel 4), had je dit kunnen doen:

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

In feite had je de achterste tikken niet eens nodig, omdat ze niet hoeven te ontsnappen. Je had dus gewoon kunnen schrijven:

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

U hebt dit ook niet nodig in de afsluiting als u alleen een database-instructie uitvoert.

Een betere benadering van wat u doet is echter als volgt:

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

Merk op dat de laatste oplossing soms een fout kan veroorzaken vanwege een bug in Doctrine, wat meestal optreedt als je een opsomming in de tabel hebt (niet alleen de kolom die je aan het wijzigen bent).

Voor meer informatie, zie Laravel Database Migration - Modifying Column



  1. Onze meest populaire databaseblogposts in 2017

  2. SQL JOIN veel-op-veel

  3. Voorwaardelijke opmaak toepassen op een getal in SQL Server met FORMAT()

  4. Serialiseren van verwijdert uit geclusterde Columnstore-indexen