Не удается перенести внешние ключи - PullRequest
0 голосов
/ 17 октября 2019

ОБНОВЛЕНИЕ: Сейчас я собираюсь отказаться от внешнего ключа. Похоже, мой проект не работает на фундаментальном уровне, поэтому я вернусь к нему позже. Я ценю двух полезных парней в комментариях.

Я пытаюсь включить внешние ключи в свое приложение Laravel, но я просто застреваю. Я продолжаю получать "errno: 150 "Foreign key constaint is incorrectly formed".

Даже после попытки нескольких решений, удаления таблицы, изменения порядка миграции и т. Д., Я продолжаю возвращаться к этой ошибке. Это очень расстраивает.

Я также попробовал php artisan migrate:refresh и php artisan migrate:reset, но, похоже, ничего не помогло.

В приведенном ниже коде есть фрагмент кода из CreateQuestionsTable class

        Schema::table('questions', function(Blueprint $table){
        $table->foreign('answerTypeName')->references('answerType')->on('answerstypes');
    });

Я пытался поместить это в CreateAnswersTable class, но это тоже не решило.

В приведенном ниже коде есть еще один фрагмент кода из CreateQuestionsTable class

        Schema::create('questions', function (Blueprint $table) {
        $table->increments('id');
        $table->string('questionName');
        $table->string('answerTypeName');
        $table->timestamps();
    });

Здесь я также попытался изменить answerTypeName на answerTypeId с $table->integer, но это также не помогло.

class CreateQuestionsTable extends Migration
{
 /**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('questions', function (Blueprint $table) {
        $table->increments('id');
        $table->string('questionName');
        $table->string('answerTypeName');
        $table->timestamps();
    });

    Schema::table('questions', function(Blueprint $table){
        $table->foreign('answerTypeName')->references('answerType')->on('answerstypes');
    });
}
}

class CreateAnswertypesTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('answerstypes', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('answerType');
        $table->timestamps();
    });


}
}

Это ошибка, которая продолжает появляться

PDOException::("SQLSTATE[HY000]: General error: 1005 Can't create table `impact_dockwize`.`questions` (errno: 150 "Foreign key constraint is incorrectly formed")")

Я ожидаю, что это будет работать так, но ошибка продолжает появляться, когда я пытаюсь выполнить миграцию php artisan. Как я уже упоминал выше, применение php artisan migrate: обновление или сброс, похоже, не работают.

1 Ответ

0 голосов
/ 17 октября 2019

Посмотрите на это:

Schema::table('questions', function(Blueprint $table){
    $table->foreign('answerTypeName')->references('answerType')->on('answerstypes');
});

Удалите его и оставьте так:

Schema::create('questions', function (Blueprint $table) {
    $table->increments('id');
    $table->string('questionName');
    $table->string('answerTypeName');
    $table->timestamps();

    $table->foreign('answerTypeName')->references('answerType')->on('answerstypes');
});

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...