1215无法在laravel 5中添加外键约束,外键

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

2019_04_23_164151_create_contacts_table.php迁移文件

<?php

 use Illuminate\Support\Facades\Schema;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;

 class CreateContactsTable extends Migration
 {
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{

    Schema::create('contacts', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('first_name');
        $table->string('last_name');
        $table->string('surname');
        $table->timestamps();
    });

    Schema::create('contacts_relations', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedInteger('phone_id')->nullable()->default(1);
        $table->unsignedInteger('contact_id')->nullable()->default(1);
    });

    Schema::create('contact_phone', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('phone_number');
        $table->unsignedInteger('contacts_relations_id')->nullable()->default(1);
    });

}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('contacts');
}}

2019_04_24_183110_contacts_relations.php外键设置器

 <?php

 use Illuminate\Support\Facades\Schema;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;

 class ContactsRelations extends Migration
 {
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('contacts_relations', function (Blueprint $table) {
        $table->foreign('contact_id')->references('id')->on('contacts');
    });
    Schema::table('contact_phone', function (Blueprint $table) {
        $table->foreign('contacts_relations_id')->references('id')->on('contacts_relations');
    });

}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    //
}
}

运行php artisan migrate:fresh并获取SQLSTATE [HY000]:一般错误:1215无法添加外键约束(SQL:alter table contacts_relations add constraintcontacts_relations_contact_id_foreign foreign key(contact_id)referencescontactsid)on update cascade on update cascade)

sql laravel laravel-5 migration database-migration
1个回答
0
投票

您应该确保所有列都是相同的类型。例如在表contacts中,id列是无符号大整数,因此当您在contact_id中创建contacts_relations列而不是:

$table->unsignedInteger('phone_id')->nullable()->default(1);

它应该是:

$table->unsignedBigInteger('phone_id')->nullable()->default(1);

类似于contacts_relations_id专栏

© www.soinside.com 2019 - 2024. All rights reserved.