如何让我在 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_HOST
、DB_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 服务器上的 /