admin

在迁移中运行原始SQL

sql

我正在尝试使用任何语法,但无法考虑如何正确编写此代码:

Schema::table('users', function(Blueprint $table){
    $sql = <<<SQL
        ALTER TABLE 'users' MODIFY 'age' DATETIME
    SQL;
    DB::connection()->getPdo()->exec($sql);
});

也尝试过

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

和双引号等。运行迁移时,总是得到以下信息:

语法错误或访问冲突:1064您的SQL语法有错误。检查
与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的“用户”修改“年龄” DATETIME附近使用

是的,我已经检查过,MariaDB使用MySQL的语法(至少在这种情况下)。


阅读 100

收藏
2021-05-10

共1个答案

admin

使用反引号而不是单引号来转义MySQL中的标识符:

alter table `users` modify `age` datetime

在这种情况下,您可以完全忽略转义

alter table users modify age datetime
2021-05-10