Sql参数化异常 返回

SqlSugar 沟通中
4 468
该叫什么 fry 发布于2026/6/22
悬赏:0 飞吻

 select 

   a.ContentType as '类型',

   a.BucketName as '桶',

   count(1) as '数量'

 from Sys_Attachment a

 where not a.IsDeleted=1   AND   `a`.`ContentType` = @Condita_ContentType0    AND   `a`.`BucketName` = @Condita_BucketName0   

 group by a.ContentType,a.BucketName HAVING count(1) >= @Conditcount(1)0

image.png




热忱回答4

  • fate sta fate sta VIP0
    2026/6/23

    代码怎么写的

    0 回复
  • fry fry VIP0
    2026/6/23

    @fate sta

    var modelSql = sqlSugarProvider.Utilities.ConditionalModelsToSql([

        new ConditionalModel

        {

            FieldName = nameof(ICreated.CreateId),

            ConditionalType = ConditionalType.Equal,

            FieldValue = userId

            //CSharpTypeName = nameof(System.Data.DbType.String)

        }

    这种写法生成的条件,参数化的SQL,然后

    sqlSugarProvider.Ado.SqlQueryAsyn<>(sql,new List<SugarParameter>())  这种执行的

    你那边底层生成参数化的时候,HAVING count(1) >= @Conditcount(1)0  带有括号,mysql不支持这种带括号的,可能是没考虑到聚合的条件做查询


    Utilities.ConditionalModelsToSql生成参数化的时候,没有考虑到如果是聚合的列,可能包含有括号,比如:子查询聚合,外面的查询用到了count(1) 做参数条件 ,比如:count(1)>=10

    0 回复
  • fate sta fate sta VIP0
    2026/6/23
    • IsCorrectErrorSqlParameterName:字段有特殊字符导致SQL参数错误的兼容配置(性能有影响,可以通过修改配置局部启用 db.CurrentConfig.xxx.xx=true 这样)

    在你的查询前面修改一下db的配置,让他支持特殊字符


    0 回复
  • fry fry VIP0
    2026/6/24

    @fate sta:好的

    0 回复