Задать вопрос
Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))

В чем может быть проблема с установкой внешнего ключа?

Сегодня несколько часов прострадал с миграцией... создаю промежуточную таблицу и указываю внешние ключи, один ключ ставится без проблем, второй ни в какую... типы полей идеинтичные (проверено вплоть до команды SHOW CREATE TABLE table_name;), имена верные, ошибка не информативная ниразу... не ставится даже напрямую через команды в терминале докер контейнера...
Гугл ничего внятного не дал (кроме банальщины с именами полей и таблиц и типами полей).
Куда можно еще копать? Пока так и оставил таблицу без одного внешнего ключика....

З.ы. была таблица, понадобился новый функционал, создал новую и промежуточную таблицу - на новую ключь вешается, на старую нет... сносить старую не вариант....

сама миграция:
class CreateProductTagTagGroupTable extends Migration
{
  public function up()
  {
    Schema::create('product_tag_tag_group', function (Blueprint $table) {
      $table->increments('id');
      $table->unsignedInteger('product_tag_id');
      $table->unsignedInteger('tag_group_id');
    });
    Schema::table('product_tag_tag_group', function (Blueprint $table) {
      $table->foreign('product_tag_id')->references('id')->on('product_tags');
      $table->foreign('tag_group_id')->references('id')->on('tag_groups');
    });
  }

  public function down()
  {
    Schema::dropIfExists('product_tag_tag_group');
  }
}
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если таблицы уже заполнены, то убедитесь, что в таблице, в которую добавляете ключ, нет значений, отсутствующих в референсной таблице.
Ответ написан
А обе основных таблицы точно созданы до промежуточной?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы