无法在Heroku上获取Laravel API数据

时间:2019-09-24 10:05:40

标签: laravel api heroku deployment

我在免费的Heroku服务器上部署了Laravel REST API。我还在已部署的应用程序上安装了ClearDB MySQL扩展。

我的问题是,当我在Postman中键入URL来查找我的API数据时,我得到了嵌入在某些HTML中的错误消息:

SQLSTATE[HY000] [1045] Access denied for user 'user'@'ip' (using password: YES) (SQL: select count(*) as aggregate from `test_data`)

所以,这是正确的URL,但是由于某些原因,不允许我访问它。

我也尝试将本地数据库数据迁移到已部署的数据库,但收到以下错误消息:

In Connection.php line 665:

  SQLSTATE[HY000] [1045] Access denied for user 'user'@'ip' (using password: YES) (SQL: select * fro  
  m information_schema.tables where table_schema = heroku_xxxxx and table_name = migrations and table_type =   
  'BASE TABLE')                                                                                                          


In Connector.php line 70:

  SQLSTATE[HY000] [1045] Access denied for user 'user'@'ip' (using password: YES) 

我知道这些是权限错误,但是我不确定为什么要得到它们。我也知道Heroku的基础架构取决于Postgres,使用起来可能会更容易。但是至少现在,我已经有一个MySQL数据库,因此我想使用它。因此,为什么要安装ClearDB以使用MySQL数据库。

在Heroku上的配置变量中,我只有这个:

CLEARDB_DATABASE_URL: (The URL)

为什么会出现这些错误?如何获取和查看我的API数据?

1 个答案:

答案 0 :(得分:0)

您的环境变量键名不正确。
在您的.env或Heroku仪表板的配置变量中,应该有类似的内容

DATABASE_URL=mysql://username:password@us-cdbr-west.cleardb.com/DATABASE?reconnect=true

然后确保您正在config/database.php

中使用该连接
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],