首页 > 解决方案 > 在 Heroku 上使用 Jaws Maria DB 的 Laravel 应用程序出现 MYSQL 错误

问题描述

我在 Heroku 上有一个使用 Maria DB 作为附加组件的 Laravel 应用程序。我的应用程序已启动并正在运行。一切都适用于我的本地。当我尝试运行 heroku php artisan migrate 将我的表迁移到数据库时,我收到了这个错误。

在 Connector.php 第 68 行:

SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo 失败:名称或服务未知

在 Connector.php 第 68 行:

PDO::__construct(): php_network_getaddresses: getaddrinfo 失败:名称或服务未知

我已将我的 Env 变量添加到 Heroku 仪表板。一旦我添加了 JAWS Marai DB,它就给了我 JAWS_MARIA_DB 连接字符串,但我已经尝试过了,我已经删除了这个 var 并从我的 .env 中添加了所有 nexessary DB var,但没有任何效果。顺便说一句,我使用的是 Heroku JAWS DB 设置页面提供给我的 DB 值,而不是本地项目中的值。

任何人都有任何想法。

谢谢!

标签: mysqllaravelheroku

解决方案


这个问题有点老了,但我认为这将有助于其他人试图诊断这个问题。

您需要将以下内容添加到数据库配置文件中。

if(getenv('SQL_URL')) {
  $url = parse_url(getenv('SQL_URL'));

  putenv('DB_HOST='.$url['host']);
  putenv('DB_PORT='.$url['port']);
  putenv('DB_USERNAME='.$url['user']);
  putenv('DB_DATABASE='.substr($url["path"], 1));
  putenv('DB_PASSWORD='.$url['pass']);
}

只要您将jawsDB URL 添加到Heroku 中的配置变量中,就会解析该URL 并生成正确的数据库配置信息。


推荐阅读