Storageable 操作报错:Invalid object name 返回

SqlSugar 沟通中
21 633
该叫什么 zy8008 发布于2025/7/26
悬赏:0 飞吻

Mysql数据表是存在的,配置如下应,查询能成功

image.png

但在使用以下语句的时候报如下错误!

           

var list = _db.Storageable(jobTriggers).ToStorage();
await list.AsInsertable.ExecuteCommandAsync();
await list.AsUpdateable.ExecuteCommandAsync();


image.png

附连接字符串:

server=xxxx;Database=jack_test;Uid=jack;Pwd=xxxxxxx;allowuservariables=True;UseXaTransactions=false;

热忱回答21

  • fate sta fate sta VIP0
    2025/7/26

    表名不存在

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    也可能是多租户连错库了

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

         db.CurrentConnectionConfig.ConnectionString 

    当前字符串

    0 回复
  • zy8008 zy8008 VIP0
    2025/7/26

    表名是存在的,而且是可以查询出来数据的
    image.png

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    这个错是数据库扔出来的,表就是不存在。。不是库搞错就是表搞错了

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    可用db.queryable<T>().ToList()进行验证

    0 回复
  • zy8008 zy8008 VIP0
    2025/7/26

    确实是连接字符串错了,匹配到了另一个租户的连接字符串上了!

    我是用类上的的Tenant配置的

    image.png
    对应的配置如下

    image.png

    为什么会出现错的配置呢?

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

        db.CurrentConnectionConfig.ConnectionString 

    当前字符串


    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    var mydb=db.ConnectionWithAttr<T>();


    拿到正确的db

    0 回复
  • zy8008 zy8008 VIP0
    2025/7/26

    await _db.AsTenant().QueryableWithAttr<JobTrigger>()

    是正确的,数据也能出来

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    WithAttr是关键。。

    var mydb=db.ConnectionWithAttr<T>();

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    方法没有WithAttr需要手动获取

    0 回复
  • zy8008 zy8008 VIP0
    2025/7/26

    这个问题在以前版本没出现过,以前功能是正常的,是最近更新过版本出现的!

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    var mydb=db.ConnectionWithAttr<T>();

    mydb.Stroable

    这样改

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    没有withattr都是默认一个库

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    不管哪个版本都是一样的

    0 回复
  • zy8008 zy8008 VIP0
    2025/7/26

    我感觉很疑惑!

    请看我产线和开发环境的对比

    image.png

    同样的代码和链接字符串配置,租户配置也是一样的,PRD是用的5.1.4.170,功能是一切正常的!
    image.png

    DEV环境因为升级了5.1.4.198版本,就会出现多租户链接映射错误报错,必须用你提供的方法先拿到对应的链接配置才能成功

    image.png

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    字符串顺序可能不一样

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    没有withattr都是默认一个库

    0 回复
  • fate sta fate sta VIP0
    2025/7/26

    代码这样写规范点

    var mydb=db.ConnectionWithAttr<T>();

    mydb.StroableXXX


    0 回复
  • zy8008 zy8008 VIP0
    2025/7/29

    我大概知道原因了,因为PRD和开发环境的连接配置顺序不一样的。

    PRD第一个链接配置就是JobTrigger的配置

    DEV则不是JobTriger的配置

    我是不是可以这样理解:

    多租户配置中如果没有使用WithAttr,则不会根据对象配置的Tenant自动配置链接配置,会默认使用配置列表中的第一个,所以我在DEV会报错,PRD不会!

    0 回复