我在免费的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数据?
答案 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'),
]) : [],
],