Laravel 5 + PostgreSQL: "Database [postgres] not configured." 错误

Laravel 5 + PostgreSQL: "Database [postgres] not configured." Error

我正在尝试开始使用 Laravel + PostgreSQL 并一直在关注 database tutorial.

不幸的是,更新数据库配置文件后运行php artisan migrate,出现如下错误:

  [InvalidArgumentException]
  Database [postgres] not configured.

令我疑惑的是我没有在配置中指定"postgres"数据库,而是我通过cPanel设置的另一个数据库,比如"example_database"。


这是我的 /config/database.php 配置的一些相关部分:

'default' => env('DB_CONNECTION', 'postgres')

在同一文件的 connections 数组中:

'pgsql' => [
        'driver'   => 'pgsql',
        'host'     => env('DB_HOST', 'localhost'),
        'database' => env('DB_DATABASE', 'example_database'), // This seems to be ignored
        'username' => env('DB_USERNAME', 'example_username'),
        'password' => env('DB_PASSWORD', 'example_password'),
        'charset'  => 'utf8',
        'prefix'   => '',
        'schema'   => 'public'
    ],

我使用的实际数据库凭据在我的 SQL Workbench 客户端上运行良好,因此这似乎是 Laravel 配置问题。有任何想法吗?我找了至少一个小时无果。

您必须在 .env 文件中输入您的配置。

您所做的配置只有在 .env

中尚未定义时才会加载

您需要使用 pgsql 而不是 postgres

DB_CONNECTION=pgsql
DB_HOST=localhost
DB_DATABASE=DB_NAME
DB_USERNAME=USER
DB_PASSWORD=PW 

Laravel 有时会缓存您的配置。如果你 运行 在一切正常的情况下遇到这个问题,请尝试 运行ning

php artisan config:cache

我知道这是一个老问题,已经有了答案;然而,这里有一个小小的解释:

如果您在 config 目录中检查您的 database.php,您会发现您的连接类型很少,包括 pgsql。因此,密钥必须与 .env 文件中的 DB_CONNECTION 匹配。你绝对可以用 postgres 替换 pqsql 连接密钥,它会以同样的方式工作。

但是,我建议替换值 DB_CONNECTION,而不是修改配置。

DB_CONNECTION=pgsql