如何向现有表添加外键

问题描述 投票:0回答:1

嗨,我正在使用 laravel 10,想要向现有表添加外键

    public function up(): void
    {
        Schema::disableForeignKeyConstraints();

        Schema::table('channels', function (Blueprint $table) {
            $table->foreignIdFor(App\Models\User::class)
            ->after('name')
            ->constrained();
        });

        Schema::enableForeignKeyConstraints();
    }

    public function down(): void
    {
        Schema::table('channels', function (Blueprint $table) {
            $table->dropForeign(['user_id']);
            $table->dropColumn('user_id');
        });
    }

我使用命令 Schema::disableForeignKeyConstraints() 禁用了外键验证,但仍然收到错误。

SQLSTATE[HY000]:一般错误:1 无法添加默认值为 NULL 的 NOT NULL 列(连接:sqlite,SQL:alter table "channels" add 列“user_id”整数不为空)

请告诉我如何解决

php laravel sqlite
1个回答
0
投票

问题是您想要创建一个外键,它会转换为一个更改,将添加/修改列使其不可为空,但默认值为空。

您可以明确声明非空默认值,例如

->default(0)

或将列设置为可为空

->nullable()
© www.soinside.com 2019 - 2024. All rights reserved.