SQLSTATE [42P01]: неопределенная таблица: 7 ОШИБКА: отношение "категории" не существует ЛИНИЯ 1: выберите * из "категорий" ^ (SQL: выберите * из "категорий") - PullRequest
0 голосов
/ 19 февраля 2020

Я только что развернул вчера на Heroku и подключился к Postgresql db, и с тех пор у меня на экране (и на терминале) на Heroku появляется забавная ошибка:

SQLSTATE [42P01] : Неопределенная таблица: 7 ОШИБКА: отношение "категории" не существует ЛИНИЯ 1: выберите * из "категории" ^ (SQL: выберите * из "категории")

В моем терминале ниже эта ошибка, у меня есть ошибка неопределенной таблицы о том, что моя таблица категорий не существует. Это так расстраивает, потому что это существует, и это прямо там! Может ли кто-нибудь помочь с этим? У кого-нибудь была похожая проблема?

Пробовал:

  • Таблицы отката: запуск герока php Мастер миграции: откат
  • миграция fre sh: Запуск героки php Мастер миграции: фри sh
  • мигрировать сброс: запуск герока php ремесленник мигрировать: сброс

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

таблица историй:

        <?php

    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;

    class CreateStoriesTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('stories', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->string('title');
                $table->text('story');
                $table->date('published_on');
                $table->integer('count_views')->default(0);
                $table->unsignedBigInteger('user_id');
                $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
                $table->unsignedBigInteger("category_id");
                $table->foreign('category_id')->references('id')->on('categories')->ondDelete('cascade');
                $table->timestamps();
            });
        }

        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('stories');
        }
    }

таблица категорий:

    <?php

    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;

    class CreateCategoriesTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('categories', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->string('category');
                $table->string('title')->nullable();
                $table->string('img')->nullable();
                $table->timestamps();
            });
        }

        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('categories');
        }
    }

Модель истории:

        <?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;
    use App\Reviews;
    use App\User;
    use App\Category;
    use App\ReadingList;

    class Story extends Model
    {

        protected $guarded = [];

        public function readingList()
        {
            return $this->belongsTo(ReadingList::class);
        }

        public function category()
        {
            return $this->belongsTo(Category::class);
        }

        public function reviews() {
            return $this->hasMany(Reviews::class);
        }

        public function user() {
            return $this->belongsTo(User::class);
        }

    }

Категория модели:

    <?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    use App\Story;

    class Category extends Model
    {
        protected $guarded = [];

        public function story() 
        {
            return $this->hasMany(Story::class);
        }

    }

Занимался этим несколько дней, может, вы, ребята, видите то, чего не вижу я. Огромное спасибо заранее.

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Вы должны изменить дату в именах файлов миграции

Пример

2019_07_29_113341_create_categories_table
2019_07_30_113341_create_stories_table

старшее время даты будет первым,

вам следует перенести таблицу категорий рассказы

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

1 голос
/ 19 февраля 2020

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

  • Переименовать миграцию таблицы категорий и переместить ее в начало миграции таблицы журналов
  • Удалить все таблицы в БД
  • Запустите миграцию снова
0 голосов
/ 19 февраля 2020

Вы можете создать один файл миграции в этих сценариях ios.

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateStoriesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('category');
            $table->string('title')->nullable();
            $table->string('img')->nullable();
            $table->timestamps();
        });

        Schema::create('stories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->text('story');
            $table->date('published_on');
            $table->integer('count_views')->default(0);
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->unsignedBigInteger("category_id");
            $table->foreign('category_id')->references('id')->on('categories')->ondDelete('cascade');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('categories');
        Schema::dropIfExists('stories');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...