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'找不到驱动程序(SQL:插入...' [重复]
Laravel 5 PDOException 找不到驱动程序