GaussDb更新时Jsonb字段会报错 返回

SqlSugar 沟通中
12 176

ScreenShot_2026-01-12_192627_608.pngScreenShot_2026-01-12_192605_549.png
在GaussDb会报这个错 是还有其他额外的配置吗

热忱回答12

  • 用json试试不要用jsonb

    0 回复
  • @fate sta:是可以 但是jsonb的一些操作就用不了了 

    0 回复
  • moersetting里面有个jsonp配置你看一下。

    0 回复
  •    [SqlSugar.SugarColumn( SqlParameterDbType = NpgsqlTypes.NpgsqlDbType.Jsonb)]

     

     这样试试


    0 回复
  • @fate stamoresetting配了EnableJsonb和使用   [SqlSugar.SugarColumn( SqlParameterDbType = NpgsqlTypes.NpgsqlDbType.Jsonb)]都不行 还是报同样的错


    0 回复
  • @fate sta

    UPDATE "User"  SET
               "UsedLoginUserName"='["999"]'  WHERE "_id"=N'07a2feb5-0897-45b7-86fc-d6a890539c49'

    但是上面ToSqlString()出来的倒是能直接在数据库执行成功 只是用Sqlsugar就报错

    0 回复
  • @fate sta:在原生PostgreSQL jsonb没问题,在OpenGauss就不行

    0 回复
  • [SqlSugar.SugarColumn( SqlParameterDbType = NpgsqlTypes.NpgsqlDbType.Jsonb)]

     

    加上这个,并且打印的SQL不准。

    0 回复
  • @fate sta:加了 一样报错

    0 回复
  • var sql=UtilMethods.GetNativeSql(exp.sql,exp.parameters)

    用这个打印出SQL

    0 回复
  • @fate staimage.png

    [Sql]:UPDATE "User"  SET
               "UsedLoginUserName"=@UsedLoginUserName  WHERE "_id"=@_id 
    [Pars]:
    [Name]:@_id [Value]:07a2feb5-0897-45b7-86fc-d6a890539c49 [Type]:String    
    [Name]:@UsedLoginUserName [Value]:["888"] [Type]:AnsiString


    public class User
    {
       [SugarColumn(IsPrimaryKey = true, ColumnName = "_id")]
       public string Id { get; set; }
       [SugarColumn(IsJson = true,SqlParameterDbType = NpgsqlTypes.NpgsqlDbType.Jsonb)]
       public string[] UsedLoginUserName { get; set; }
    }


    0 回复
  •     it.Aop.OnExecutingChangeSql = (sql, para) =>
        {
            foreach (var item in para)
            {
                if (item.IsJson) 
                {
                    item.CustomDbType = NpgsqlTypes.NpgsqlDbType.Jsonb;
                }
            }
            return new System.Collections.Generic.KeyValuePair<string, SugarParameter[]>(sql, para);
        };

    AOP全局处理一个这个。

    0 回复