如何使用 Laravel 迁移将字符串列类型转换为整数?

Nag*_*amy 11 php mysql laravel

我正在尝试使用 Laravel 迁移更改列数据类型。但我面临以下错误。请帮帮我。

Schema::table('files', function(Blueprint $table) {
    $table->integer('app_id')->change();
    $table->index(['app_id', 'filename']);
});
Run Code Online (Sandbox Code Playgroud)

SQLSTATE[42000]:语法错误或访问冲突:1064 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解utf8_unicode_ci在第 1 行的“CHARACTER SET utf8 DEFAULT 0 NOT NULL COLLATE ”附近使用的正确语法(SQL:ALTER TABLE files CHANGE app_id app_id INT CHARACTER SET utf8 DEFAULT 0 NOT NULL COLLATE utf8_unicode_ci

小智 10

作为https://github.com/doctrine/dbal/issues/3714的替代解决方案,它正在降级学说/dbal 包,你可以这样做:

Schema::table('member_section', function (Blueprint $table) {
    $table->bigInteger('type')->charset(null)->collation(null)->change();
});
Run Code Online (Sandbox Code Playgroud)


Nic*_*uch 9

您的问题很可能是由最新版本的doctrine/dbal软件包中的错误引起的。该问题是通过v2.10.0.

您可以随时将您的软件包降级composer.jsonv2.9.3它应该可以正常工作。

在此处查看官方问题:https : //github.com/doctrine/dbal/issues/3714