php - 带有消息 'could not find driver' Laravel 和 Postgresql 错误的 PDOException

标签 php laravel postgresql apache

首先,问题在于 Laravel 而不是 postgresql 或 PHP。我可以用一个简单的 PHP 文件连接 postgresql。但是 Laravel 不能以某种方式做到这一点。

当我尝试使用 laravel 连接计算机中的 postgresql 服务器时,出现“PDOException with message 'could not find driver'”错误。运行 DB::connection()->getPdo(); 时出现此错误工匠修补匠的命令。

如果我运行 php artisan migrate命令,错误是 Illuminate\Database\QueryException : could not find driver (SQL: select * from information_schema.tables where table_schema = public and table_name = migrations and table_type = 'BASE TABLE')
我的配置如下:

  • Windows 10
  • Wamp 服务器 3.1.4
  • Apache 2.4.35
  • PHP 7.2.10
  • Laravel 框架 6.0.3

  • Laravel .env 文件的相关行:
    DB_CONNECTION=pgsql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=laravel_dnm1
    DB_USERNAME=postgres
    DB_PASSWORD=mrd.BE.265
    

    Laravel database.php 文件的相关行:
    'default' => env('DB_CONNECTION', 'pgsql'),
    

    ...
        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],
    

    当我跑 print_r(PDO::getAvailableDrivers());在我的服务器上,我得到以下输出:

    Array ( [0] => mysql [1] => pgsql [2] => sqlite )



    相关的php信息行如下:

    Screenshot of phpinfo

    注意:当我使用 mysql 而不是 postgresql 时没有问题。

    NOTE2:当我使用普通的 PHP 时,我可以连接数据库。只有 Laravel 会出现此错误。

    最佳答案

    安装 PostgreSQL

    sudo apt-get install php-pgsql
    

    然后在 etc/php/$PHP_VERSION/apache2/php.ini 文件中取消注释 pgsql 和 pdo-pgsql 扩展

    然后重启apache2

    关于php - 带有消息 'could not find driver' Laravel 和 Postgresql 错误的 PDOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58023924/

    相关文章:

    PHP计算一个字符串中的字符在另一个字符串中出现的次数

    php - 在 mysql 中更新日期和时间时如何修复 laravel 的错误日期和时间

    laravel - Vue组件扩展布局时找不到#app

    python - 配置不当的 : Error loading psycopg2 module: No module named 'psycopg2._psycopg' zappa

    postgresql - Postgres : get local timestamp with time zone of latest midnight

    php - 如何在 PHP 中获得多个错误处理程序?

    php - 如何在 PHP 文件中使用 etags?

    php - Heroku,我正在尝试将Google2fa添加到我的Heroku Web服务器中,但它的响应是419页已过期

    java - Laravel exec() 在队列作业中

    sql - PostgreSQL多pg_trgm相似度评分子查询