xiangshang190823

Results 11 comments of xiangshang190823

实际case: 我们用的线下是mysql 8.0 线上mysql 5.7版本,目前去用该库的sqlbuilder 查询rank字段,会报错。

实际case: 我们用的线下是mysql 8.0 线上mysql 5.7版本,目前去用该库的sqlbuilder 去组装sql语句,查询rank字段,会报错。 select rank from testA; 5.7版本,可以正常查询出数值; 8.0版本。会报错, ![Uploading 0d656abbf4b5266b2b4d5caa5.png…]()

/** * @description: base 查询商城 banner 方法 * @param {context.Context} ctx * @param {map[string]interface{}} where 查询条件 * @return {[]h5MallModel.BannerInfoDB, error} 返回结果 */ func baseGetMallBanner(ctx context.Context, where map[string]interface{}) ([]dressupmallModel.MallBannerDB, error) {...

以下两个语句就是反引号的差异,但是在mysql 5.7旧版本引用了8.0定义的关键字作为字段的话,gendry构建出的sql语句,则会报错。 当前框架构建的sql语句 SELECT * FROM tb_mall_banner WHERE rank = ? 目前看gorm构建的语句其实用反引号避免了这个case,故建议加上这个反引号的处理更优雅&& 能兼容更多样的情况 gorm构建的语句 SELECT * FROM `tb_mall_banner` WHERE `tb_mall_banner`.`rank` = ?

以下两个语句就是反引号的差异,但是在mysql 5.7旧版本引用了8.0定义的关键字作为字段的话,gendry构建出的sql语句,则会报错。 当前框架构建的sql语句 SELECT * FROM tb_mall_banner WHERE rank = ? 目前看gorm构建的语句其实用反引号避免了这个case,故建议加上这个反引号的处理更优雅&& 能兼容更多样的情况 gorm构建的语句 SELECT * FROM tb_mall_banner WHERE`tb_mall_banner`.`rank` = ?

tb_mall_banner 和rank中间的反引号被消除了,展示不出来 ![Uploading sql.png…]()

我们是基于gendry之上封装了一层,where["rank"]=xxx可以规避查询问题,但是insert 插入语句遇到关键词也有问题

例如,INSERT INTO tb_mall_banner ( photo, rank, android_url, ios_url, status, start_time, end_time, op_user, min_app_version, max_app_version, create_time, update_time, device) VALUES (296, 'voiceroom/banner/2024-02-23/146591d6-96ae-427f-a0bd-e493f85daa7a.png', 4, ‘a’, ‘b’, 1, 1708617600, 1712851200, ‘a’, '', '', 0,...

如果where 不加反引号也能行,但是insert 也没有的话,这个就很囧,不太好实现 我当前的case,或者用当前框架还有没有别的方式去实现