You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic报错「Not unique database」:基于Excel订单数据按条件分流至两个队列失败

AnyLogic报错「Not unique database」:基于Excel订单数据按条件分流至两个队列失败

Hey Selina,我来帮你搞定这个头疼的报错问题~这个「Not unique database」错误本质是AnyLogic认为你的Excel数据源存在主键重复、数据源配置冲突,或者数据读取逻辑导致重复访问同一行数据,下面是一步步的排查和解决方法:

  • 检查Excel数据源的主键设置
    这是最常见的原因:打开Project面板里的Data Sources,找到你导入的Excel文件,右键选择Edit。在弹出的配置窗口里,确保你指定了唯一的主键列——比如你的订单表中的「Bestellnummer」(订单编号),因为每个订单肯定是唯一的。如果之前没设置主键,或者主键列里有重复值(比如Excel里不小心输入了相同的订单号),AnyLogic就会报这个错。你可以先在Excel里用条件格式检查一下订单编号列有没有重复值,修正后再回到AnyLogic里设置主键。

  • 修正Source生成Agent的逻辑
    你在Source里生成订单Agent时,要确保每次生成对应Excel里的唯一一行数据:

    1. 如果用的是「Select from database」模式,要避免重复读取同一行;
    2. 更稳妥的方式是在Source的「On agent created」事件里,把Excel行的属性赋值给Agent——比如先给你的Order Agent添加一个typ属性,然后写:agent.typ = row.Typ;(这里的row是你从数据源读取的行对象);
    3. 不要在Source里重复加载数据源,比如不要多次调用selectFrom()导致冲突。
  • 调整分流逻辑的判断方式
    你用来分流的模块(比如Decision Point或者Separate),判断条件要直接用Agent自身的属性,而不是每次分流都去查询数据库。比如你的分流条件应该写:

    agent.typ.equals("Sonderbau")
    

    这样既高效,又不会因为重复查询数据库导致主键冲突。

  • 排查重复的数据源配置
    去Project面板的Data Sources里看看,是不是不小心添加了同一个Excel文件两次?如果有重复的数据源,AnyLogic会认为数据库不唯一,直接删掉多余的那个配置就行。

如果按照上面的步骤还是解决不了,可以把你Source里的查询逻辑代码,或者Excel数据源的配置细节描述一下,我再帮你精准排查~

备注:内容来源于stack exchange,提问作者Selina Weninger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:03:09