我使用“go-sql-driver / mysql”驱动程序。
我有一个具有一些依赖关系的产品表。因此,我选择了产品并获得了将在子查询中创建笛卡尔产品的依赖项。通常会有200个产品限制才能具有更好的性能,但是在极少数情况下,该限制将被删除或提高到3000-5000,那么我将得到以下错误:

拨打tcp 127.0.0.1:3306:connectex:Normalerweise darf jede
Socketadresse(Protokoll,Netzwerkadresse oder Anschluss)nur珠宝
埃因马尔·韦温代特·沃登。

这基本上意味着:

connectex:每个套接字地址只能使用一次。

这是我的代码的一部分,基本上我所有的查询功能都是这样构建的:

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作为我的开发机器。

最佳答案

正如 reticentroot 在评论中所建议的那样,我检查了alexedwards.net/blog/organising-database-access中的一些最佳实践示例。我选择依赖项注入,它的工作原理很像。

10-08 12:37