postgresql - 运行 laravel 迁移时出现密码验证失败错误

标签 postgresql laravel laravel-5.3 psql artisan-migrate

我正在尝试在 DigitalOcean Droplet 上部署我的 Laravel 应用程序。 Droplet 是使用 nginx、php7 和 postgres 设置的,我按照 DigitalOcean 的 tuts 了解如何设置它们。然后我试着关注 this tutorial关于如何使用 git hook 等部署 Laravel 应用程序。

现在应用程序本身已启动并运行,我可以访问页面和所有内容。但我无法运行 php artisan migrate。我一直在更改 .env 文件中的数据库用户名、名称和密码,但我总是得到完全相同的错误:

[Illuminate\Database\QueryException]
SQLSTATE[08006] [7] FATAL:  password authentication failed for user "deploy"
FATAL:  password authentication failed for user "deploy" (SQL: select * from information_schema.tables where table_schema = apollo and table_name = migrations)


[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[08006] [7] FATAL:  password authentication failed for user "deploy"
FATAL:  password authentication failed for user "deploy"


[PDOException]
SQLSTATE[08006] [7] FATAL:  password authentication failed for user "deploy"
FATAL:  password authentication failed for user "deploy"

这是我最新的数据库 .env 配置:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USERNAME=postgres
DB_DATABASE=postgres
DB_PASSWORD=[my password]
DB_SCHEMA=public

如您所见,荒谬的是,即使 DB_USERNAME 设置为 postgres,错误仍然会显示 for user "deploy"

我一直在谷歌搜索,最接近的事情,或者我是这么认为的,是更新 /etc/postgresql/9.5/main/postgresql.conf 上的一些配置,这就是让 listen_addresses = '*'。我更新了它,重新启动了 postgres 服务,但仍然得到完全相同的错误。

谁能帮我指出我遗漏了什么?

谢谢。

最佳答案

这是由于缓存而发生的。

当你运行 php artisan config:cache 时,它会缓存配置文件。每当事情发生变化时,您都需要继续运行它以更新缓存文件。但是,如果您从不运行该命令,它就不会缓存。

这对于生产来说是可以的,因为配置不会经常改变。但是在 staging 或 dev 期间,您可以通过清除缓存来禁用缓存,而不运行缓存命令

因此,只需运行 php artisan config:clear,并且不要运行之前的命令以避免缓存

关于postgresql - 运行 laravel 迁移时出现密码验证失败错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382075/

相关文章:

node.js - Sequelize,如何使用 Op.contains 找到具有特定值的模型

laravel - 升级到 Laravel 5.3 - 路由未定义错误

php - 如何注销 Laravel 5.x 中过期的 session ?

php - Laravel 5.4 中按用户计数记录

database - 如何使用Grails和多个Postgresql数据库架构

javascript - Sequelize 使用对象类型创建模型

python - 对 Enum 列应用 array_agg 返回 ""{"is not among the defined enum values"

laravel - 如何修复 "Method Illuminate\Database\Schema\Blueprint::class does not exist."

Laravel - 如何使用 Guzzle 使用外部 api 并将其刷新到数据库中

javascript - 广播 Laravel 通知时应使用什么事件名称