传奇单机架设DBserver找不到与数据库加载错误解决步骤

来源: 作者: 点击:
架设单机传奇的时候,明明在文件夹里看到了DBserver.exe,但启动的时候系统就是报找不到,或者DBserver能弹出来但紧接着物品数据库加载错误和魔法数据库加载报错跟着来。这种情况跟文件本身没多大关系,出在路径配置、数据源、或者是文件被杀毒拦了。

**DBserver.exe找得到但程序认不出的原因**

如果启动器点开之后提示无法找到DBserver.exe,但你自己打开文件夹确实能看到这个文件,最直接的原因就是启动器读取的路径跟你实际放的位置对不上。很多人习惯把服务端解压到桌面或者下载文件夹,然后直接点开里面的引擎控制器,但控制器默认的路径还是上一次运行时的位置,两个路径不一致就会报找不到。

这种故障的解决方法就是把整个服务端文件夹剪切到D盘根目录,比如D:\MirServer,文件夹名字不要带中文也不要带空格和特殊符号。然后重新打开引擎控制器,在配置选项里把各个引擎程序的路径重新选一遍,指向D:\MirServer\下面对应的子文件夹,保存之后再启动就认了。

还有一种情况是DBserver.exe确实被删了,不是玩家自己删的,是杀毒软件在解压的时候后台给隔离了。去杀毒软件的隔离区里找回来还原,同时把整个服务端文件夹加入白名单,再重新解压一份覆盖也行。Win10自带的Defender拦截率最高,解压之前先把实时保护关了再操作。

**物品数据库加载错误的根源在数据源配置**

物品数据库加载错误和魔法数据库加载错误这两条报错几乎同时出现的时候,问题不在DBserver.exe本身,而是Windows系统的数据源(ODBC)没有配置好。传奇单机版用的是BDE或者ODBC来连接数据库文件,如果系统里没有对应的数据源名称,DBserver启动的时候就读不到Magic.DB和Monster.DB这些文件,直接报错弹窗。

解决方法是手动添加数据源。打开控制面板,右上角查看方式选大图标,找到管理工具,双击数据源(ODBC)。在用户DSN或者系统DSN里面,检查有没有一个叫HeroDB或者MirDB的数据源,如果没有就点添加,驱动程序选Microsoft Access Driver(*.mdb)或者SQL Server,具体选哪个看你的服务端版本。大部分复古版本用的是Access驱动,选择之后数据源名称填HeroDB,然后指向服务端里的数据库文件夹,一般是D:\MirServer\Mud2\DB,点击确定保存。如果提示驱动找不到,那就是系统缺了Access数据库引擎,去下载一个AccessDatabaseEngine安装之后再配置。

有些较新的版本用的是SQLite或者MySQL,这类不需要ODBC配置,但需要在DBserver的配置界面里填数据库账号密码和端口。检查DBserver目录下有没有一个配置文件叫DBConfig.ini或者DBSrc.ini,打开之后确认数据库类型和连接字符串跟实际匹配。如果是SQLite,注意路径里用斜杠还是反斜杠,写错了就读不到文件。

**数据库文件本身损坏或路径错误**

数据源配置正确之后还报加载错误,那就是数据库文件本身出了问题。打开服务端里的Mud2\DB文件夹,看看里面有没有Magic.DB、Monster.DB、StdItems.DB这三个文件,缺了哪个就从备份里补回来,或者从原压缩包重新解压覆盖。注意DB文件如果是只读属性也会导致加载失败,右键属性把只读勾掉。

DBserver启动之后加载数据库的路径也是可以自定义的,在DBserver的窗口菜单栏里找选项设置,看数据库目录那一栏填的是不是当前服务端实际路径。有些人之前改过路径但后来换版本了没改回来,启动器指向的还是旧路径,自然报错。

**魔法数据库加载错误单独排查**

如果物品数据库加载正常但魔法数据库报错,先检查Magic.DB的文件大小,正常应该在几MB到十几MB之间。如果文件大小只有几KB,那就是文件损坏了,找一份完好的Magic.DB替换掉。另外魔法数据库的字段结构如果被修改过,跟引擎版本不匹配也会报错,比如引擎要读取MagID字段但表里没有这个列。用DBC2000或者SQLiteSpy打开数据库文件,看字段名和引擎配置里的字段映射是否一致。

**DBserver启动顺序和权限问题**

单机架设的时候建议按顺序手动启动各程序,不要一键启动。顺序是先开DBserver,等它完全加载完毕不报错了再开LoginGate,再开M2Server。如果DBserver还没读完数据库就强行启动后面的程序,也会引发连锁报错。DBserver本身需要管理员权限才能读写硬盘上的数据库文件,右键DBserver.exe属性里勾选用管理员身份运行。

**还有一种情况:端口被占用**

DBserver启动的时候需要占用数据库通信端口,如果其他程序抢了同一个端口,DBserver虽然能打开但无法正常读写数据库,报加载错误。在DBserver的配置里把端口改成别的,比如把5000改成5001,保存重启,同时检查有没有开其他游戏服务端占了端口。

**最后的手段:替换DBserver.exe**

如果以上全试过了还是不行,那可能是DBserver.exe这个文件本身不完整或者被篡改过。从原服务端的压缩包里重新提取DBserver.exe覆盖掉当前的,覆盖之前先关掉所有相关程序。覆盖完重新配置一遍数据源,再启动基本都能过。如果翻遍了都没备份,就从网上下载同引擎版本的一套配套引擎包,把里面的DBserver.exe单独抽出来用。