常见错误
这里收集开发期间常见的错误及解决方案。
启动与连接
Q: finding dbmgr 字样一直出现,如何解决?
这种情况一般是没有发现 DBMgr,很大可能是 DBMgr 初始化时出现错误。请查看 DBMgr 的启动日志({项目资产库}/logs 下的 dbmgr.xxx.log 或 logger_dbmgr.xx.log)。常见原因:数据库连接失败(数据库名、账号密码错误等)。
MySQL 数据库
Q: dbmgr 报错:mysql_errno=1045, Access denied for user 'kbe'@'localhost'
请进入 MySQL 命令行后输入如下指令删除匿名用户,再重启服务器:
mysql> use mysql;
mysql> delete from user where user='';
mysql> FLUSH PRIVILEGES;Q: dbmgr 报错:lower_case_table_names != 2 or 0, curr=1
Windows 下 MySQL 默认为大小写不敏感,Linux 默认为敏感,引擎统一要求为敏感。
找到 MySQL 配置文件 my.ini(Windows 通常在 C:\ProgramData\MySQL\MySQL Server x.x\ 下),修改:
[mysqld]
lower_case_table_names = 2Q: MySQL 8.0+ 连接报 SSL 错误
MySQL 8.0+ 默认尝试 SSL 连接,如果服务端使用自签名证书会导致认证失败。
解决方案:Nex 已内置处理,在 kbengine.xml 的 DBMgr 配置中检查是否开启了 SSL 或者配置证书即可:
Q: MySQL 9.x 下 md5 函数报错
MySQL 9 移除了内置的 md5() 函数。Nex 2.7.2 及以上版本已兼容,请升级引擎。
Q: sync_item_to_db 每次启动都重复同步 UNICODE 字段
utf8mb4 下 UNICODE 字段的同步 BUG 已在 Nex 2.6.3 修复,升级即可。
MariaDB
Q: MariaDB 连接时 RSA 公钥认证失败
MariaDB C 客户端在某些版本下需要手动配置 RSA 公钥。Nex 已内置自动处理认证流程,无需显式设置 RSA 公钥。确保使用最新版本即可。
MongoDB
Q: MongoDB authSource 应该验证哪个数据库?
应该验证对应的数据库,而不是默认的 admin。Nex 2.7.1 已修复此问题。
Q: 同时启动多个不同类型数据库,watcher 冲突
这是 Nex 2.7.1 修复的 BUG,升级即可解决。
Python 脚本
Q: KBEngine.MemoryStream 内存泄漏
销毁时没有减少 PyGC tracing 计数,在长时间运行的服务中会累积。Nex 2.8.1 已修复。
Q: 脚本热更后部分文件未生效
reloadScript 默认只更新逻辑层,且只重新加载被修改过的文件。确保保存了文件后再触发热更。
推荐使用 KBEX 插件,插件提供了快速热更入口。
编译与安装
Q: 编译报错 snprintf output 109 or more bytes
旧版本编译器的兼容性警告,升级到最新 CMake + 编译器版本即可消除。Nex 使用 vcpkg 管理依赖,确保 vcpkg 已正确安装并联网。
Q: Linux 首次启动日志目录不存在导致 log4cxx 初始化失败
Nex 2.8.2 已自动处理:初始化前自动创建日志目录。旧版本需手动创建 logs/ 目录。
Q: Debug 模式下编译第三方 Python 包无法使用
KBE 以 Debug 模式编译时链接 Python Debug ABI,导致第三方包不兼容。Nex 2.8.2 已修复,Debug 下编译 Release Python。
客户端
Q: Navmesh 导航后 entity 乱跳
使用 navigateToDetour 时结束移动后状态同步问题。Nex 2.8.1 已修复。
Q: navigate 不绕过障碍物 / 持续触发卡顿
Nex 2.7.3 已修复。如仍遇到,检查 recastnavigation 是否正确通过 vcpkg 导入。
Q: C++ SDK TCP 下时序错乱
Nex 2.8.1 已修复 ObjectPool 和 TCP 时序问题。
