php - 如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?
问题描述
我一直在做一个需要我在 Heroku 中设置它的项目。到目前为止,我在本地使用的数据库是 mySQL,但是当项目在 Heroku 上时,我希望使用 Postgre。
我已经进行了大量搜索,但尚未找到关于如何配置我的 Laravel 项目以使用 Postgres 以及如何执行基本功能(例如向 Postgres 添加新数据库)的答案。
如果有另一种方法可以按原样使用 mySQL,那就太好了。
谢谢您的帮助。
解决方案
DATABASE_URL
Heroku 将数据库凭据放置在环境变量中(一旦您提供了 Heroku Postgres 实例) ,格式如下:
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 实例带有一个数据库。
推荐阅读
- php - Laravel API 返回文件并且客户端必须显示下载对话框
- javascript - 在页面上找不到我的 jQuery?它是否在其他元素后面显示加载的数据?
- azure-devops - Azure Devops Pipeline 测试步骤失败 - 数据文件的路径不正确
- asp.net - 在 ActionFilterAttribute 中添加标题
- python-2.7 - Python鼻子测试覆盖包并排除一些目录
- javascript - 如何使用 setInterval 函数在屏幕上显示的每个值之间以 500 毫秒的间隔显示阶乘计算?
- javascript - 在每个单元格上动态添加两个不同的按钮
- kendo-ui - Kendo Grid 中的动态过滤器
- c# - 如何在 C# 中追加和更新 cookie?
- selenium - 元素在 chrome 中不可点击