SKY引擎启动时出现“物品数据库加载错误”和“魔法数据库加载错误”,进入游戏显示“Connection closed”,核心原因是服务端没有正确读取到DBC2000数据库路径,或者数据库文件本身损坏、不兼容。这个报错在单机架设中非常常见,按照以下顺序排查即可解决。
**第一步:检查DBC2000安装与数据库别名配置**
SKY引擎依赖BDE(Borland Database Engine)读取数据库,DBC2000就是BDE的可视化管理工具。安装DBC2000后,必须手动建立数据库别名才能让服务端找到数据。具体操作:打开控制面板,找到BDE Administrator(32位系统)或BDE Administrator(64位系统需切换至32位视图)。运行后,点击菜单栏的Object → New,在弹出的对话框中选择STANDARD,点击OK。将新建的数据库名称修改为“HeroDB”或“MirDB”(具体名称需对照服务端`!Setup.txt`中的配置,大部分SKY版本使用HERODB)。修改路径指向服务端目录下的`Mud2\DB`文件夹,例如`D:\MirServer\Mud2\DB`。点击Apply保存,然后关闭BDE Administrator。
**第二步:确认数据库文件完整性**
进入服务端的`Mud2\DB`目录,检查是否存在以下三个关键文件:`Magic.DB`(技能数据库)、`Monster.DB`(怪物数据库)、`StdItems.DB`(物品数据库)。如果缺少其中一个,启动时就会报错。如果文件存在但依然报错,可能是文件损坏或版本不兼容,尝试从其他同引擎的版本中复制一份完好的DB文件覆盖测试。
**第三步:核对服务端配置中的数据库路径**
`!Setup.txt`位于`MirServer\Mir200`目录下,用记事本打开,查找以下字段:
- `DBName=HERODB`(必须与BDE中设置的别名完全一致)
- `DBPath=D:\MirServer\Mud2\DB`(必须指向实际的DB文件夹路径)
如果路径中包含中文或特殊符号,改为纯英文路径。如果`!Setup.txt`中使用了其他别名如`MirDB`,需要在BDE中同步创建相同名称的别名。
**第四步:检查DBC2000驱动权限**
在WIN7、WIN10系统上,BDE Administrator可能因权限不足无法写入配置。右键点击BDE Administrator快捷方式,选择“以管理员身份运行”后再创建别名。创建完成后,用管理员权限启动服务端引擎。
**第五步:更新数据库文件格式**
部分SKY版本要求数据库为DBE格式(通过DBC2000直接编辑),不能直接使用其他引擎的SQLite或Access格式的数据库。可以尝试用DBC2000打开`StdItems.DB`,若能正常显示字段和记录则格式正确;若提示错误,需用数据库转换工具将文件转为DBC2000兼容格式。
**“Connection closed”与数据库的关系**
“Connection closed”是指客户端连接到服务端后,服务端主动断开了连接。M2Server启动时如果数据库加载错误,服务端会处于半启动状态,登录网关虽然能响应连接请求,但进入角色选择或游戏地图时,主引擎因缺少技能和物品数据无法正常处理客户端请求,直接关闭连接。所以先解决数据库加载问题,Connection closed会自动消失。
**特殊情况的处理**
如果上述步骤全部操作后依然报错,检查服务端存放路径是否在系统盘(如C盘),部分系统对C盘的文件读写限制较严,建议将服务端移至D盘或非系统盘。另外,检查是否同时安装了多个版本的DBC2000,卸载后重新安装纯英文版的DBC2000,避免中文字符引发未知错误。

