golang fly.io-拨打tcp 127.0.0.1:3306

2ledvvac  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(107)

我有一个数据库托管在一个名为“hostinger”的平台上,数据库是一个mysql数据库,我与它的连接是这样的:程序包数据库

import (
    "database/sql"
    "fmt"
    "log"
    "os"

    _ "github.com/go-sql-driver/mysql"
    "github.com/joho/godotenv"
)

func Init() *sql.DB {
    err := godotenv.Load(".env")
    if err != nil {
        log.Println("Erro ao carregar variavel de ambiente", err)

    }
    host := os.Getenv("HOST")
    database := os.Getenv("DATABASE")
    user := os.Getenv("USER")
    password := os.Getenv("PASSWORD")

    connection := fmt.Sprintf(`%s:%s@tcp(%s)/%s`, user, password, host, database)

    db, err := sql.Open("mysql", connection)
    if err != nil {
        log.Println("Erro ao conectar com o banco de dados", err)
    } else {
        log.Println("Sucesso ao realizar conexão com banco de dados")
    }
    return db

}

字符串
在我的控制器中,我像这样使用与mysql的连接:

package controllers

import (
    "fmt"
    "log"
    "net/http"

    "github.com/gin-gonic/gin"
    "github.com/guilherm5/database"
    "github.com/guilherm5/models"
)

var DB = database.Init()

func NewUser(c *gin.Context) {
    var newUser models.User
    fmt.Println(DB)
    err := c.ShouldBindJSON(&newUser)
    if err != nil {
        log.Println("Error in read body", err)
        c.JSON(http.StatusBadRequest, gin.H{
            "Error in read body": err.Error(),
        })
        return
    }

    query, err := DB.Prepare(`INSERT INTO usuario (nome, email, senha) VALUES (?,?,?)`)
    if err != nil {
        log.Println("Error in prepare query insert", err)
        c.JSON(http.StatusInternalServerError, gin.H{
            "Error in prepare query insert": err.Error(),
        })
        return
    } else {
        query.Exec(newUser.Nome, newUser.Email, newUser.Senha)
        log.Println("Success")
        c.JSON(http.StatusOK, "Success")
    }

}


在我的localhostb上,一切都按预期工作,我可以顺利地插入用户,但是当我在fly.io上部署应用程序并尝试发送请求时,我得到错误:

{
    "Error in prepare query insert": "dial tcp 127.0.0.1:3306: connect: connection refused"
}


我的问题是:发生此错误的可能性可能是某些防火墙阻止了我的连接?例如,我托管数据库的防火墙阻止了连接,或者我托管后端的防火墙是否阻止了连接?
提前感谢,如果你需要更多的信息,我会很乐意提供

gkl3eglg

gkl3eglg1#

根据日志判断,部署的应用程序访问本地主机,但应该访问现有主机(而不是127.0.0.1)。为了更好地监视错误,通过Ping方法更改连接检查,它发出连接到数据库的真实的请求

相关问题