你好,我正在使用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 column“user_id”integer not null)
请告诉我怎么修
1条答案
按热度按时间cetgtptt1#
问题是,你想创建一个外键,它转换为一个alter,它会添加/修改一个列,使其不可为空,但默认值为null。
您可以显式地声明一个非空默认值,如
或将列设置为可空