Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何连接到Google CloudSQL PostgresSQL_Postgresql_Go_Google Cloud Platform_Google Cloud Sql_Go Gorm - Fatal编程技术网

Postgresql 如何连接到Google CloudSQL PostgresSQL

Postgresql 如何连接到Google CloudSQL PostgresSQL,postgresql,go,google-cloud-platform,google-cloud-sql,go-gorm,Postgresql,Go,Google Cloud Platform,Google Cloud Sql,Go Gorm,我试图使用Gorm golang连接到Google CloudSQL PostgresSQL,但似乎它不起作用 这是密码 func InitDB() *gorm.DB { psqlInfo := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_USER"), os.G

我试图使用Gorm golang连接到Google CloudSQL PostgresSQL,但似乎它不起作用

这是密码

func InitDB() *gorm.DB {

    psqlInfo := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_NAME"))
    db, err := gorm.Open("postgres", psqlInfo)
    if err != nil {
        fmt.Println("Failed to connect to the Database")
    }
    fmt.Println("Connected to the Database")
    DB = db
    return DB
}
如果我使用localhost配置,一切正常。有关cloudSQL配置,请参见my.env文件

DB_HOST=trader-234509:us-central1:testv1
DB_PORT=5432
DB_USER=username
DB_NAME=testv1
DB_PASSWORD=
错误是说

拨打tcp:lookup trader-234509:us-central1:testv1:没有这样的主机 死机:运行时错误:无效内存地址或零指针取消引用 [信号SIGSEGV:分段冲突代码=0x1 addr=0x40 pc=0x164681d]

我的本地配置(这个很好用)


我做错什么了吗?

云SQL还不支持直接连接到第三方应用程序的实例名称,有关详细信息:

根据我的经验,有两种解决方案:

  • 按照上述说明,您可以按照以下步骤设置云代理,连接流程为:Golang app->Cloud Proxy->Cloud SQL 这种方法非常灵活,您可以使用防火墙控制连接。
    但是您必须花费额外的$$来维护服务器和这个云代理实例,我还听说云代理可能存在一些性能问题,但到目前为止我没有确切的证据

  • 为云SQL实例分配一个私有IP,请参阅,以便应用程序可以使用此IP直接访问数据库。
    很明显,应用程序必须位于项目的同一网络中,但这是一种更方便的方法,尤其是所有应用程序都位于同一网络中

  • 我没有尝试公共IP访问方法,因为如果需要远程网络连接,云代理正是我所需要的

    简而言之,您需要使用选项2在VM或其他Google托管服务中部署代码,或者设置云代理以支持选项1的本地调试


    希望有帮助

    云SQL还不支持直接连接到第三方应用程序的实例名称,详情如下:

    根据我的经验,有两种解决方案:

  • 按照上述说明,您可以按照以下步骤设置云代理,连接流程为:Golang app->Cloud Proxy->Cloud SQL 这种方法非常灵活,您可以使用防火墙控制连接。
    但是您必须花费额外的$$来维护服务器和这个云代理实例,我还听说云代理可能存在一些性能问题,但到目前为止我没有确切的证据

  • 为云SQL实例分配一个私有IP,请参阅,以便应用程序可以使用此IP直接访问数据库。
    很明显,应用程序必须位于项目的同一网络中,但这是一种更方便的方法,尤其是所有应用程序都位于同一网络中

  • 我没有尝试公共IP访问方法,因为如果需要远程网络连接,云代理正是我所需要的

    简而言之,您需要使用选项2在VM或其他Google托管服务中部署代码,或者设置云代理以支持选项1的本地调试


    希望有帮助

    您是否尝试过将cloudsql实例的ip地址用作
    hostaddr
    而不是
    host
    ?如图所示:im使用gorm hostaddr不是库规则的一部分。在这种情况下,如果您谈论的是公共IP,您是否尝试过将实例IP用作主机。是的,我试过了,但仍然感谢你的帮助和时间来帮助我!您是否尝试过使用cloudsql实例的ip地址作为
    hostaddr
    而不是
    host
    ?如图所示:im使用gorm hostaddr不是库规则的一部分。在这种情况下,如果您谈论的是公共IP,您是否尝试过将实例IP用作主机。是的,我试过了,但仍然感谢你的帮助和时间来帮助我!
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=username
    DB_NAME=test
    DB_PASSWORD=