Golang Mysql connectex socket block

时间:2017-09-22 09:28:57

标签: mysql sockets go

我使用" go-sql-driver / mysql"驱动程序。 我有一个产品表,有一些依赖项。所以我选择产品并获得将在子查询中创建笛卡尔积的依赖项。通常有200个产品限制以获得更好的性能,但在极少数情况下,限制将被删除或提升为3000-5000然后我将得到以下错误:

  

拨打tcp 127.0.0.1:3306:connectex:Normalerweise darf jede   Socketadresse(Protokoll,Netzwerkadresse oder Anschluss)nur jeweils   einmal verwendet werden。

基本上意味着:

  

connectex:仅使用每个Socketaddress一次。

这是从我的代码中删除的,基本上所有的查询函数都是这样构建的:

mysql := this.DBController.Connect()
defer mysql.Close()
.
.
.
for rows.Next() {
    err := rows.Scan(&x, &y, &z)
    if err != nil {
        log.Println("DBFetchMachines: Scan Error")
        log.Println(err)
    }
    product.PurchasePrice = this.priceR.DBFetchPurchasePriceByProductID(product.ID)
    product.SellingPrice = this.priceR.DBFetchSellingPriceByProductID(product.ID)
    product.DealerContact = this.contactR.DBGetBasicContact(product.DealerContact.ID)
    .
    .
    .
}

当我只查询200-1000行时,没有问题。 这可能是操作系统相关的问题吗?我使用Win10 64Bit作为我的开发机器。

1 个答案:

答案 0 :(得分:0)

正如评论中提到的 reticentroot ,我检查了alexedwards.net/blog/organising-database-access一些最佳做法示例。我选择依赖注入,它就像一个魅力。