Laravel在Heroku上使用Jaws Maria DB的应用程序出现MYSQL错误

时间:2019-01-11 22:13:27

标签: mysql laravel heroku

我在Heroku上有一个Laravel应用,使用Maria DB作为附加组件。我的应用程序已启动并正在运行。一切都在我本地执行。当我尝试运行heroku php artisan migration将表迁移到DB时,出现此错误。

在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连接字符串,但是我只是用它尝试了一下,我删除了这个变量,并从我的.env中添加了所有nexessary DB变量,并且没有任何作用。顺便说一句,我使用的是从Heroku JAWS DB设置页面给我的DB值,而不是本地项目中的值。

任何人都有任何想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

这个问题有点老了,但是我认为这可以帮助其他尝试诊断这个问题的人。

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

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']);
}

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