sql >> Databáze >  >> RDS >> Mysql

Spusťte nezpracovaný SQL při migraci

Problémem (jak řekl @postashin) byly backticks.

Od Laravelu 5 (nejsem si jistý Laravelem 4) jste mohli udělat toto:

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

Ve skutečnosti jste ani nepotřebovali zadní klíšťata, protože nepotřebují útěk. Takže jsi mohl napsat:

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

Nepotřebujete to ani v uzávěrce, pokud právě provádíte příkaz databáze.

Nicméně lepší přístup k tomu, co děláte, je následující:

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

Všimněte si, že poslední řešení může někdy způsobit chybu kvůli chybě v Doctrine, která se obvykle vyskytuje, pokud máte v tabulce výčet (nejen sloupec, který měníte).

Další informace naleznete v části Migrace databáze Laravel – sloupec úprav



  1. jak vytvořit ISO-8601 gregoriánskou datovou tabulku v postgresu

  2. Počet dalších řádků v tabulce se stejnou hodnotou

  3. Jak funguje APPROX_COUNT_DISTINCT() na serveru SQL Server

  4. Co je T-SQL?