Laravel не удалось найти второй драйвер

#php #laravel #postgresql #laravel-5 #eloquent

#php #laravel #postgresql #laravel-5 #красноречивый

Вопрос:

Я создаю веб-приложение с двумя базами данных:
Первый: база данных для регистрации пользователей, регистрации и т. Д. / В MySQL
Второй: база данных для данных фондового рынка / в PostgreSQL


Первая база данных (MySQL) работает без каких-либо проблем.
Но второй (PostgreSQL) не работает.


Это мой env-файл:

 DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=panel
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION_SECOND=pgsql
DB_HOST_SECOND=localhost
DB_PORT_SECOND=5432
DB_DATABASE_SECOND=assets_daily_info
DB_USERNAME_SECOND=postgres
DB_PASSWORD_SECOND=1234
 

И вот файл php конфигурации базы данных:

 'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST_SECOND', '127.0.0.1'),
            'port' => env('DB_PORT_SECOND', '5432'),
            'database' => env('DB_DATABASE_SECOND', 'forge'),
            'username' => env('DB_USERNAME_SECOND', 'forge'),
            'password' => env('DB_PASSWORD_SECOND', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],
 

Я создал модель, в которой я хочу получать данные из базы данных PostgreSQL:

     namespace AppModels;
use IlluminateSupportFacadesDB;
use IlluminateDatabaseEloquentModel;

class Thepage extends Model
{
    protected $connection = 'pgsql';
    protected $table = 'queue_stats';
    protected $fillable = [
        'buyqueue', 'sellqueue', 'timestamp',
    ];
}
 

И, наконец, вот контроллер:

 class Thepage Controller extends Controller
{
    public function index()
    {
        $queues = Thepage::all();
        return view('pages.queue-stats',compact('queues'));
    }
}
 

Проблема в том, что laravel не может найти драйвер, он просто показывает:

IlluminateDatabase QueryException не удалось найти драйвер (SQL: выберите * из «queue_stats»)

Я дважды проверил файлы apache и php .ini, расширения pdo_pgsql и pgsql не раскомментированы в обоих файлах.
Я попробовал очистить кеш и кеш конфигурации, ничего не произошло, и я все еще получаю эту досадную ошибку.
Где я делаю неправильно?

Комментарии:

1. php -m Показывает ли расширение?

2. @DigitalDrifter да, pdo_mysql pdo_pgsql pdo_sqlite pgsql

3. Используете ли вы php-fpm? Если да, то что phpinfo(); покажет, если вы добавите это как вверху public/index.php , а затем получите доступ к своей домашней странице в браузере? Вы должны увидеть кучу сброшенной информации и раздел со списком включенных расширений.

Ответ №1:

Выполните следующие команды :

 composer update
composer require doctrine/dbal
 

Обязательно раскомментируйте / добавьте extension=pdo_pgsql.so в свой файл php.ini вашей запущенной версии PHP.

Комментарии:

1. Я раскомментировал это

2. @MostafaSafarian, остановите свой проект laravel и зарезервируйте его снова с php artisan serve помощью или перезапустите Apache / Nginx, если вы работаете на Linux

3. выполнил все шаги, но по-прежнему безуспешно. он по-прежнему показывает IlluminateDatabaseQueryException could not find driver (SQL: select * from "queue_stats")