如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?

Posted

技术标签:

【中文标题】如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?【英文标题】:How do I make my Laravel project on Heroku use Heroku Postgres? 【发布时间】:2019-06-12 03:04:25 【问题描述】:

我一直在从事一个需要在 Heroku 中进行设置的项目。到目前为止,我在本地使用的数据库是 mysql,但我希望在项目在 Heroku 上时使用 Postgre。

我已经进行了大量搜索,但尚未找到关于如何配置我的 Laravel 项目以使用 Postgres 以及如何执行基本功能(例如向 Postgres 添加新数据库)的答案。

如果有另一种方法可以直接使用 mySQL,那就太好了。

感谢您的帮助。

【问题讨论】:

问题已在此处解决:***.com/questions/45488070/… 【参考方案1】:

Heroku 将数据库凭据放置在(一旦您提供 Heroku Postgres 实例)DATABASE_URL 环境变量中,格式如下:

postgres://username:password@hostname:port/database

现在,您可以手动填写您的 DB_HOSTDB_USERNAME.env 变量,但有更好的方法:您可以在 config/database.php 文件中解析 URL。

注意: 较新版本的 Laravel 现在直接支持 DATABASE_URL .env 值。不再需要解析。

'pgsql' => [
    'driver' => 'pgsql',
    'host' => parse_url(env('DATABASE_URL'), PHP_URL_HOST),
    'port' => parse_url(env('DATABASE_URL'), PHP_URL_PORT),
    'database' => ltrim(parse_url(env('DATABASE_URL'), PHP_URL_PATH), '/'),
    'username' => parse_url(env('DATABASE_URL'), PHP_URL_USER),
    'password' => parse_url(env('DATABASE_URL'), PHP_URL_PASS),
    'charset' => 'utf8',
    'prefix' => '',
    'schema' => 'public',
    'sslmode' => 'prefer',
],

(确保将DB_CONNECTION 设置为pgsql,以便使用此连接!)

如何执行基本功能,例如向 Postgres 添加新数据库

你没有。 Heroku Postgres 实例带有一个数据库。

【讨论】:

旁注:如果您要使用 Postgres,您也​​应该在本地使用 - 两者之间可能存在差异,因此您可能会发现某些迁移不起作用等。否则,有 MySQL 数据库的第三方 Heroku 提供程序。 elements.heroku.com/addons/jawsdb elements.heroku.com/addons/jawsdb-maria 或者您可以启动 AWS RDS 实例之类的东西并将您的配置指向它。 太好了,谢谢你的帮助,我还有一个问题,database.php中已经有一个pgsql条目,我应该用你上面给我的连接替换它吗? @TimothyHayes 这取决于你。您可以创建一个标题为 'heroku' 而不是 'pgsql'new 连接,并将 DB_CONNECTION 设置为该连接。就个人而言,我只是使用它并将我的本地 .env 设置为具有我的本地主机设置的 DATABASE_URL 设置。 为所有的帮助伙伴干杯 谢谢,这行得通,这是我的.env 的样子,以防有人需要参考:DATABASE_URL=postgres://homestead:secret@127.0.0.1:5432/getbookmark

以上是关于如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上的 Laravel 5.4。 Forbidden 您无权访问此服务器上的 /

在Heroku 18上安装PDFTK以便在我的Laravel应用程序中使用

禁止在 heroku 中托管 laravel 应用程序时,您无权访问此 xampp 服务器上的 /

安装依赖项后如何清理heroku中的缓存?

阻止 IP 地址访问我在 Heroku 上的 Flask 应用程序?

如何通过 https 和 heroku 上的 rails 服务云端资产?