Laravel 找不到第二个驱动程序

Posted

技术标签:

【中文标题】Laravel 找不到第二个驱动程序【英文标题】:Laravel could not find second driver 【发布时间】:2021-03-07 01:54:59 【问题描述】:

我正在构建一个有两个数据库的 web 应用程序:第一个:用于用户注册、注册等的数据库/在 MySQL第二:股票市场数据的数据库/在PostgreSQL


第一个数据库 (mysql) 没有任何问题。 但是第二个(PostgreSQL)不起作用


这是我的环境文件:

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 App\Models;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;

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找不到驱动,只是显示:

Illuminate\Database\QueryException 找不到驱动程序(SQL: select * from "queue_stats")

我仔细检查了 apache 和 php 的 .ini 文件,扩展 pdo_pgsql 和 pgsql 在两个文件中都没有注释。 我尝试了清除缓存和配置缓存,没有任何反应,但我仍然收到这个烦人的错误。 我哪里做错了?

【问题讨论】:

php -m 是否显示扩展名? @DigitalDrifter 是的,pdo_mysql pdo_pgsql pdo_sqlite pgsql 你在使用 php-fpm 吗?如果是这样,如果您在顶部附近添加 public/index.php 然后在浏览器中访问您的主页,phpinfo(); 会显示什么?你应该会看到一堆信息被转储和一个列出启用的扩展的部分。 【参考方案1】:

执行这些命令:

composer update
composer require doctrine/dbal

确保在您正在运行的 PHP 版本的 php.ini 文件中取消注释/添加 extension=pdo_pgsql.so

【讨论】:

我已取消注释 @MostafaSafarian,停止您的 laravel 项目并使用php artisan serve 再次保留它,或者如果您正在使用 linux,请重新启动 Apache/nginx 完成了所有步骤,但仍然没有运气。它仍然显示Illuminate\Database\QueryException could not find driver (SQL: select * from "queue_stats")【参考方案2】:

尝试更改值

DB_HOST=127.0.0.1

DB_HOST_SECOND=127.0.0.1

【讨论】:

以上是关于Laravel 找不到第二个驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 - 找不到驱动程序:Illuminate\Database\QueryException 找不到驱动程序(SQL:select * from `list`)

如何解决 laravel 中“找不到驱动程序”?

Laravel'找不到驱动程序(SQL:插入...' [重复]

Laravel 5 PDOException 找不到驱动程序

Laravel 5 PDOException 找不到驱动程序

Docker Laravel Mysql:找不到驱动程序