如何使用GORM向MySQL插入POINT类型数据?解决单引号问题
Gorm中Location类型Valuer的POINT查询问题解决方法
你当前实现的Valuer把X和Y拼接成单个字符串作为参数,Gorm会自动为字符串参数添加单引号,导致生成的SQL是POINT('XX.XXXXX, YY.YYYYY'),而数据库的POINT函数需要接收两个独立的数值参数,单引号的存在会引发语法错误。
修改后的正确实现如下:
func (loc Location) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { return clause.Expr{ SQL: "POINT(?, ?)", Vars: []interface{}{loc.X, loc.Y}, } }
这样Gorm会将X和Y作为两个独立的数值参数传入,生成的SQL格式为POINT(XX.XXXXX, YY.YYYYY),完全符合数据库POINT函数的参数要求,查询就能正常执行了。
内容的提问来源于stack exchange,提问作者K.k
相关产品推荐
相关产品推荐

