【问题标题】:SQLSTATE[HY000] [2002] Connection refused when deploying a laravel app to HerokuSQLSTATE[HY000] [2002] 将 laravel 应用程序部署到 Heroku 时连接被拒绝
【发布时间】:2018-12-07 18:14:41
【问题描述】:

我正在尝试将 laravel 应用程序部署到 heroku。我已经使用我的一个应用程序成功完成了此操作,但是在运行命令 heroku run php artisan migrate 时出现以下错误:

In Connection.php line 664:

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from 
information_schema.tables where table_schema = todolist and 
table_name = migrations)

In Connector.php line 67:

SQLSTATE[HY000] [2002] Connection refused

我检查了 database.php 和 .env 是否有匹配的配置:

.env:

DB_CONNECTION=pgsql
DB_HOST=foo.amazonaws.com
DB_PORT=5432
DB_DATABASE=database
DB_USERNAME=user    
DB_PASSWORD=password

数据库.php:

return [

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

      'connections' => [


        'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', 'foo.amazonaws.com'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'database'),
            'username' => env('DB_USERNAME', 'user'),
            'password' => env('DB_PASSWORD', 'password'),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ]

]

我已经阅读了一些类似的帖子,并尝试将 DB_HOST 从 127.0.0.1 更改为 localhost,但没有成功。

在我为我的数据库使用 postgres 后,heroku 给出了数据库值。我在这里错过了什么吗?欢迎所有建议。

【问题讨论】:

  • 我希望这些不是您的实际数据库名称、用户名、密码。我会编辑发布以隐藏这些,然后更改您的数据库凭据。

标签: php laravel postgresql heroku


【解决方案1】:

.env 文件被 git 忽略,因此不会被推送到 Heroku。为了解决您的问题,凭据应该以与您拥有它们相同的方式位于 database.php 文件中:

'pgsql' => [
      'driver' => 'pgsql',
        'host' => env('DB_HOST', 'ec2-12-34-56-789.compute-1.amazonaws.com'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'dbXXXXXXXXXXXX'),
        'username' => env('DB_USERNAME', 'XXXXXXXXXXXXXX'),
        'password' => env('DB_PASSWORD', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'),
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
    ]

密码应该是 64 个字符长,所以我会说可能会仔细检查值,然后再次推送更改。推送成功后,运行:

$ heroku run php artisan migrate

【讨论】:

  • 避免将您的凭据放在 database.php 中,因为这将对存储库中的其他贡献者公开!相反,请在您的应用程序 heroku 设置中配置“设置 -> 配置变量”
猜你喜欢
  • 2021-09-24
  • 2017-05-04
  • 1970-01-01
  • 2017-09-20
  • 2020-03-26
  • 2020-12-04
  • 2020-02-27
  • 2016-11-03
  • 1970-01-01
相关资源
最近更新 更多