您面临的问题似乎与go-sql-driver/mysql的实现有关。根据文档,当使用go-sql-driver/mysql时,您需要编写错误处理逻辑,手动关闭*sql.Rows
,并且不能轻松地重用代码,这使得您的代码稍微冗余。
然而,文档没有提到您在TiDB中使用上下文取消不起作用的问题。当使用TiDB时,go-sql-driver/mysql的实现可能存在错误或限制,导致上下文取消不起作用。
尝试使用Golang的推荐ORM库GORM,而不是go-sql-driver/mysql。文档提供了如何在TiDB事务中使用GORM的说明。