Не могу добавить внешний ключ - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь добавить внешние ключи в таблицу в laravel, и эта ошибка появилась у меня

In Connection.php line 664:

  SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL
  : alter table `bugFix` add constraint `bugfix_project_id_foreign` foreign k
  ey (`project_id`) references `Project` (`id`))


In Connection.php line 458:

  SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

Я искал проблемы, похожие на InE, и все просили установить ядро ​​базы данных на InnoDB, и я сделал, но ошибка все еще остается. Это мой сценарий миграции для создания таблицы bugFix

public function up()
{
    Schema::create('bugFix', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        ...
        $table->unsignedInteger('project_id');
        ...
        $table->foreign('project_id')
          ->references('id')->on('Project');
        ...
    });
}

И это скрипт, который создает таблицу проекта

public function up()
{
    Schema::create('project', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        // Project document information
        $table->increments('id');
        ...
    });
}

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы должны попробовать это:

public function up()
{
    Schema::create('bugFix', function (Blueprint $table) {
        $table->integer('project_id')->nullable()->unsigned();
        ...
        $table->foreign('project_id')
          ->references('id')->on('Project')->onDelete('cascade');
        ...
    });
}
0 голосов
/ 01 ноября 2018

попробуйте изменить миграцию на unsigned integer declaration и имя таблицы должно быть точным написанием Project => project

public function up()
{
    Schema::create('bugFix', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        ...
        $table->integer('project_id')->unsigned();
        ...
        $table->foreign('project_id')
          ->references('id')->on('project');
        ...
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...