Laravel Artisan使用Sqlite迁移删除列引发异常

insrf1ej  于 2022-12-19  发布在  SQLite
关注(0)|答案(1)|浏览(145)

bounty将在3天后过期。回答此问题可获得+250声望奖励。Richard Parnaby-King希望引起更多人关注此问题。

我尝试在一个遗留的Laravel项目中设置一些单元测试。这个项目有很多创建和更新数据库的迁移脚本。这个迁移在MySQL数据库上运行良好,但是我不想持久化测试数据库,所以我使用标准的Sqlite数据库的.env.测试配置:

其中一个迁移文件包含以下内容:

public function up()
{
    Schema::table('product_variants', function (Blueprint $table) {
        $table->dropColumn(['sku']);
    });
}

虽然此迁移在MySQL中工作,但当我尝试在测试模式下(即在Sqlite中)运行迁移时,我收到以下消息:

阅读Laravel文档时,不支持从Sqlite连接中删除多个列,因此我将数组参数转换为字符串(['sku']转换为'sku'),但这没有改变任何内容。
如何让迁移在Sqlite中工作?

mi7gmzs6

mi7gmzs61#

laravel文件中有一个警告:
使用SQLite数据库时,不支援在单一移转中卸除或修改多个数据行。
因此,请尝试拆分迁移。

public function up()
{
    Schema::table('product_variants', function (Blueprint $table) {
        $table->dropColumn('sku');
    });

Schema::table('product_variants', function (Blueprint $table) {
        $table->dropColumn('vku');
    });
}

我知道这是一个坏主意,但这可能是你目前问题的一个可能的解决方案。希望,它对你有效。

相关问题