Laravel Ошибка: SQLSTATE [42S01]: базовая таблица или представление уже существует: 1050 Таблица «категории» уже существует - PullRequest
0 голосов
/ 31 марта 2020

Я не могу понять, в чем проблема, две таблицы почему-то не соединяются, я прочитал много статей и перепробовал много вещей, которые все еще не работают.

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

  public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->string('name');
            $table->text('description');
            $table->integer('category_id');
            $table->integer('price');
            $table->integer('currency_id');
        });
    }

Категория

 public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->string('name');
            $table->bigInteger('post_id')->unsigned();
            $table->foreign('post_id')->references('id')->on('posts');
        });
    }

Это ошибка, которую я получаю:

SQLSTATE [ 42S01]: базовая таблица или представление уже существует: 1050 «категории» таблицы уже существуют (SQL: создать таблицу categories (id bigint unsigned not null первичный ключ auto_increment, created_at timestamp null, updated_at timestamp null , name varchar (255) не ноль, post_id bigint без знака, не ноль) набор символов по умолчанию utf8mb4 collate 'utf8mb4_unicode_ci')

1 Ответ

0 голосов
/ 31 марта 2020

Попробуйте полностью обновить базу данных с помощью команды migrate:refresh artisan.

php artisan migrate:refresh --seed

Возможно, миграция базы данных была выполнена и завершилась неудачно, прежде чем она могла зарегистрироваться в таблице migrations вашей базы данных.


Проблемы: (пока)

1) Как указано выше, migrate:refresh перебирает исходную ошибку

2) $table->bigInteger('post_id')->unsigned(); не будет работать, поскольку posts.id является integer, а не bigInteger.

Решение:

Измените определение post_id на

$table->integer('post_id')->unsigned();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...