未知的网络的 Heroku cleardb 连接默认地址

abh*_*ink 3 mysql heroku go cleardb

我为我的应用程序创建了一个免费的 Heroku cleardb 实例。我将数据库 URL 设置为:

heroku config:set DATABASE_URL='mysql://user:pass@us-cdbr-iron-east-03.cleardb.net/heroku_database?reconnect=true'
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Go应用程序进行连接。但是当我尝试访问我的应用程序时,它给出了以下 mysql 错误:

default addr for network 'us-cdbr-iron-east-03.cleardb.net' unknown
Run Code Online (Sandbox Code Playgroud)

我也尝试使用协议和端口设置数据库 url:

heroku config:set DATABASE_URL='mysql://user:pass@tcp(us-cdbr-iron-east-03.cleardb.net:3306)/heroku__database?reconnect=true'
Run Code Online (Sandbox Code Playgroud)

这会将错误更改为:

Access denied for user
Run Code Online (Sandbox Code Playgroud)

我猜这是因为不允许直接访问端口。有人知道这里有什么问题吗?

abh*_*ink 6

这是一个Go具体的问题。需要进行三处更改:

  1. Go'ssql.Open已经将 scheme 作为其第一个参数,因此需要将其剥离DATABASE_URL
  2. 连接字符串不应包含任何查询参数 (remove ?reconnect=true)。
  3. 协议(TCP)和端口(3306为MySQL)号码需要。

因此最终的数据库 URL 将是:

DATABASE_URL='user:pass@tcp(us-cdbr-iron-east-03.cleardb.net:3306)/your_heroku_database'
Run Code Online (Sandbox Code Playgroud)