Infor LN / Baan 错误代码
LN/Baan 常见错误代码速查手册(社区贡献,仅供参考)。
常见错误代码索引
| 错误代码 | 严重度 | 简介 | 链接 |
|---|---|---|---|
| 1306 | ❌ 错误 | 记录被锁定(record is locked) | 查看 |
| 2050 | ❌ 错误 | 表或视图不存在 | 查看 |
| 1012 | ⚠️ 警告 | 记录不存在 | 查看 |
| 250 | ❌ 错误 | 意外错误(unexpected error) | 查看 |
| 100 | ⚠️ 警告 | 通用错误 | 查看 |
| RAISERROR | ❌ 错误 | DAL 错误处理 | 查看 |
错误代码详解
1306 - Record is locked
产品:Infor LN / Baan IV / Baan V
严重度:❌ 错误
描述:尝试访问或锁定已被其他用户/进程锁定的记录。
原因: - 其他用户正在编辑同一条记录 - 前一个事务未提交或回滚 - 程序异常退出导致锁未释放 - 死锁(deadlock)情况
解决方案:
1. 等待其他用户释放锁(通常 1-5 分钟)
2. 使用 Close Sessions 会话清理工具
3. 数据库层面:kill 锁定进程(需 DBA 协助)
4. 检查代码:确保 dal.update(), dal.new(), dal.delete() 后有 dal.commit() 或 dal.rollback()
代码示例(避免锁):
dal.define.table({
table: "tiitm001",
lock: dal.LOCK.SHARED | 使用共享锁,不是独占锁
})
dal.set.where("tiitm001._index1 = :item")
dal.select.do({
on.NOTFOUND: | 记录不存在 |
on.SUCCESS:
| 尽快完成操作,释放锁
dal.update.table("tiitm001", {...})
dal.commit() | 立即提交,释放锁
})
参考: - Infor LN 错误参考指南 - Stack Overflow - Baan 1306 错误
2050 - Table or view does not exist
产品:Infor LN
严重度:❌ 错误
描述:DAL 操作中引用的表或视图在数据库中不存在。
原因: - 表名拼写错误 - 表未在当前公司(company)中创建 - 缺少相应的许可(table not licensed) - 数据库 schema 未同步
解决方案:
1. 检查表名拼写(区分大小写)
2. 使用 Create Tables 会话(tccma1215m000)创建表
3. 检查公司设置::c 命令查看当前公司
4. 运行 synchronize tables 同步数据库 schema
代码示例(安全访问):
| 先检查表是否存在
if not dal.table.exists("tiitm001") then
message.error("表 tiitm001 不存在,请先创建")
retval = -1
return(retval)
endif
dal.define.table({table: "tiitm001", lock: dal.LOCK.SHARED})
| ...
参考: - Infor LN Enterprise Server 错误消息
1012 - Record does not exist
产品:Infor LN / Baan
严重度:⚠️ 警告
描述:dal.select.do 或 dal.get.first() 未找到匹配记录。
原因:
- 表中没有匹配条件的记录
- where 条件过于严格
- 表中确实没有数据
解决方案:
1. 检查 where 条件是否正确
2. 使用 on.NOTFOUND 处理记录不存在的情况
3. 如果是必需记录,先创建再查询
代码示例:
dal.define.table({table: "tiitm001", lock: dal.LOCK.SHARED})
dal.set.where("tiitm001._index1 = :item")
dal.select.do({
on.NOTFOUND:
message.warning("物料 " + item + " 不存在")
retval = -1
on.SUCCESS:
| 处理记录
retval = 0
})
return(retval)
250 - Unexpected error
产品:Infor LN / Baan
严重度:❌ 错误
描述:意外的系统错误,通常由底层系统问题引起。
原因: - 数据库死锁 - 磁盘空间不足 - 内存不足 - 网络中断(远程数据库)
解决方案:
1. 检查数据库日志(通常位于 $BSE/log/)
2. 检查磁盘空间:df -h(Linux)或资源管理器(Windows)
3. 重启 LN 服务(需管理员权限)
4. 联系系统管理员
RAISEERROR - DAL 错误处理
产品:Infor LN
严重度:❌ 错误(可自定义)
描述:DAL 函数中通过 raise.error() 主动抛出错误。
原因: - 业务逻辑验证失败 - 数据完整性检查失败 - 自定义错误处理
解决方案:
1. 在调用 DAL 函数后检查返回值
2. 使用 dal.get.error.message() 获取错误信息
3. 在 UI 中显示友好的错误消息
代码示例:
long result = dal.call.function("tiitm001.check.availability", item, qty)
if result != 0 then
string err.msg = dal.get.error.message()
message.error("库存检查失败:" + err.msg)
return(-1)
endif
参考: - DAL 完全指南 - Infor LN DAL2 开发详解
其他常见错误
| 错误代码 | 简介 | 常见原因 | 解决方案 |
|---|---|---|---|
| 104 | 权限不足 | 用户没有表的读写权限 | 联系管理员分配权限 |
| 204 | 重复记录 | 唯一索引冲突 | 检查是否已存在相同记录 |
| 1001 | 字段值超出范围 | 数据长度/类型不匹配 | 检查输入数据格式 |
| 3201 | 公司不存在 | 指定的公司编号无效 | 使用 :c 查看可用公司 |
调试技巧
启用 4GL 调试日志
查看 LN 日志
贡献
欢迎提交更多 LN/Baan 错误代码和解决方案!请查看 资源提交规范。
最后更新:2026-05-11