微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在多协程中运行 postgres Tx

如何解决如何在多协程中运行 postgres Tx

我必须在 groutine 中运行 tx.exec(),但它总是返回 pq: bad conenctionpq: unexpected Parse response 'D'

这是我的代码示例:

func (uc odooUseCase) SynchronizetourPackage(tourPackageID,partnerID string,odooPackageID int64) (err error) {
    var wg sync.WaitGroup

    odooUc := odooUseCase{UcContract: uc.UcContract}
    odooDB,err := odooUc.BuildConnection(partnerID)
    if err != nil {
        logruslogger.Log(logruslogger.WarnLevel,err.Error(),functioncaller.PrintFuncName(),"odoo-build-connection")
        return err
    }
    defer odooDB.Close()

    tourPackagePriceUseCase := TourPackagePriceUseCase{UcContract: uc.UcContract,odooDB: odooDB}
    tourPackageMealUseCase := TourPackageMealUseCase{UcContract: uc.UcContract,odooDB: odooDB}

    errs := make(chan error)

    wg.Add(1)
    go func() {
        wg.Wait()
        close(errs)
    }()

    wg.Add(1)
    go func() {
        err := tourPackagePriceUseCase.SaveFromodoo(tourPackageID,partnerID,odooPackageID)
        if err != nil {
            logruslogger.Log(logruslogger.WarnLevel,"save-tour-package-price",uc.ReqID)
            errs <- err
        }
        defer wg.Done()
    }()

    wg.Add(1)
    go func() {
        err := tourPackageMealUseCase.SaveFromodoo(tourPackageID,"save-tour-package-meal",uc.ReqID)
            errs <- err
        }
        defer wg.Done()
    }()

    err = <-errs

    return err
}

我需要在 go 例程中运行一个 tx.exec,因为这个函数是从另一个数据库同步的。 请有人可以帮助我吗?谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?