Laravel php artisan переносит ошибки в пустую базу данных - PullRequest
0 голосов
/ 22 мая 2018

Странные вещи происходят.Я пытался запустить миграцию с php artisan migrate, но получил следующую ошибку о отсутствующей таблице (которая должна быть создана и заполнена миграциями).

PHP Fatal error:  Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'app.portals' doesn't exist in /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80
Stack trace:
#0 /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(80): PDO->prepare('select * from `...', Array)
#1 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Doctrine\DBAL\Driver\PDOConnection->prepare('select * from `...')
#2 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#3 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#4 /home/daniel/Programming/app/vendor/laravel in /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664
PHP Fatal error:  Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'app.portals' doesn't exist in /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80
Stack trace:
#0 /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(80): PDO->prepare('select * from `...', Array)
#1 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Doctrine\DBAL\Driver\PDOConnection->prepare('select * from `...')
#2 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#3 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#4 /home/daniel/Programming/app/vendor/laravel in /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664

Версия Laravel: 5.5. *

Версия PHP: 7.1

Предыстория:

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

Попытки:

Каждая команда ремесленника, которую я мог достать, но ни одна из них не работала, потому что даже php artisan --help выдал ошибку выше ...

Я также пыталсяклонировать репо как новый старт, затем проверить ветку, над которой я работаю, и запустить php artisan migrate с той же ошибкой.

Миграции:

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

<?php

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

class CreatePortalLinks extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('portal_viewer_user', function (Blueprint $table) {
            $table->integer('viewer_user_id');
            $table->integer('portal_id');
        });

        Schema::create('admin_user_portal', function (Blueprint $table) {
            $table->integer('admin_user_id');
            $table->integer('portal_id');
        });

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

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

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Причина ошибки:

Ошибка была вызвана поставщиком услуг Laravel, у которого в конструкторе был запрос к базе данных.

Оказывается - я не знал об этом - что поставщики услуг Laravel получают экземпляры при запуске artisan.

Решение:

После того, как я поставил некоторую проверку в свой сервис-провайдер, чтобы остановить выполнение запроса по командам кустарного промысла, запустив php artisan migrate:install, php artisan migrate:fresh и php artisan migrate --seed, заполненные базой данных с помощьювсе необходимые таблицы и записи.

0 голосов
/ 22 августа 2019

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

php artisan migrate: fresh

, а также php artisan migrate: rollback, но у меня все еще есть эта ошибка.

Мое соединение в порядке, у меня одно и то же имя в рабочей среде sql и в файле env.

0 голосов
/ 22 мая 2018

Вы пытаетесь обновить.

вам следует попробовать php artisan migrate: fresh

Команда down не будет работать, так как удалять нечего.

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

...