Laravel: Как исправить SQLSTATE [23000]: нарушение ограничения целостности? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь заполнить базу данных с помощью сеялки.

Я получаю сообщение об ошибке:

SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (forge. projects, CONSTRAINT projects_status_id_foreign ИНОСТРАННЫЙ КЛЮЧ (status_id) ССЫЛКИ status_projects (id))

Вот мои миграции:

public function up()
{
    Schema::create('projects', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('subtitle');
        $table->longText('main_data');
        $table->string('budget_description');
        $table->integer('owner_id')->unsigned();
        $table->integer('category_id')->unsigned();
        $table->integer('deadline_id')->unsigned();
        $table->integer('city_id')->unsigned();
        $table->string('website')->nullable()->default('null');  //reference
        $table->decimal('budget', 18, 4);
        $table->integer('status_id')->unsigned()->default('1');
        $table->dateTime('started_at')->nullable();
        $table->integer('account_id')->unsigned()->default(1);
        $table->timestamps();
        $table->softDeletes();
    });
}

Это миграциядля статуса:

public function up()
{
    Schema::create('status_projects', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
    });
}

Несколько человек работают над этим проектом, поэтому я создал дополнительную миграцию:

public function up()
{
    Schema::table('projects', function (Blueprint $table) {
        $table->unsignedInteger('status_id');
        $table->foreign('status_id')
            ->references('id')->on('status_projects')
            ->onDelete('cascade');
    });
}

Теперь, когда я пытаюсь выполнить команду

php artisan migrate

Я получаю сообщение об ошибке:

SQLSTATE [42S21]: Столбец уже существует: 1060 Повторяющееся имя столбца «status_id» (SQL: изменить таблицу projects добавить status_id int без знака без нуля)

Как я могу это исправить?

1 Ответ

0 голосов
/ 25 марта 2019

Это должно решить проблему: вы должны обновить базу данных (ps: вы собираетесь заново вставить строки)

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