【发布时间】:2019-06-18 05:53:44
【问题描述】:
我必须将user_id列的类型从accounts改为nullable,但它是用户id列的外键,应该如何正确完成?
我正在与Laravel 5.6.27 和MySQL 5.6 合作,
我尝试使用门面的功能,但它不起作用。
现在我正在测试这些语句,我有这个错误:
在 Connection.php 第 664 行: SQLSTATE [HY000]:一般错误:1025 将“./gonano/#sql-c_b”重命名为“./gonano/accounts”时出错(错误号:150 - 键约束格式不正确)(SQL:ALTER TABLE 帐户更改user_id user_id INT DEFAULT NULL)
创建用户表:
public function up(): void
{
Schema::create('users', function (Blueprint $table): void {
$table->increments('id');
$table->string('first_name', 100);
$table->string('last_name', 100);
$table->string('email')->unique();
$table->bigInteger('cuit')->unsigned();
$table->string('password');
$table->enum('status', ['activated', 'blocked'])->default('activated');
$table->integer('country_id')->unsigned()->references('id')->on('countries');
$table->timestampsTz();
});
}
create_accounts_table:
public function up(): void
{
Schema::create('accounts', function (Blueprint $table): void {
$table->bigIncrements('id');
$table->string('address')->default('');
$table->integer('user_id')->index()->unsigned();
$table->integer('system_id')->index()->unsigned()->default(0);
$table->foreign('user_id')->references('id')->on('users');
$table->timestampsTz();
});
}
change_user_id_to_nullable_in_accounts:
public function up()
{
Schema::disableForeignKeyConstraints();
DB::table('accounts')->truncate();
Schema::table('accounts', function (Blueprint $table): void {
$table->integer('user_id')->nullable()->change();
});
Schema::enableForeignKeyConstraints();
}
我需要 user_id 可以为空,但我无法实现,谢谢帮助
【问题讨论】: