传奇世界单机架设更换彩虹引擎提示no such table StdItems数据库报错解决教程

来源: 作者: 点击:
传奇世界单机架设,原本使用AFT引擎,服务器频繁自动重启,更换彩虹引擎后启动服务端弹出提示,正在读取配置信息,正在加载物品数据库,随即提示服务器启动异常,报错内容为no such table: StdItems select * from StdItems order by idx。该报错属于数据库表缺失类故障,下面完整说明故障成因以及分步处理方法。

这个报错字面意思是数据库内找不到StdItems数据表,StdItems是物品数据表,彩虹引擎读取物品数据时无法检索到这张表,服务端直接终止启动。AFT引擎和彩虹引擎数据库结构并不通用,两个引擎使用的数据库文件格式、数据表结构存在差异,直接把AFT引擎配套的数据库文件拿来给彩虹引擎使用,就会出现数据表缺失。AFT引擎的物品存储结构和彩虹引擎不一样,单纯替换引擎主程序,没有同步替换配套数据库文件,是本次故障的核心原因。

第一步,先备份当前整套服务端目录,复制一份存放至其他磁盘分区,避免操作失误造成原有文件丢失。备份完成之后,找到彩虹引擎原版配套数据库文件。彩虹引擎自带的数据库文件一般存放在服务端DB目录内,确认该目录下数据库文件是否完整。不要继续沿用AFT引擎遗留的db数据文件,直接删除旧的AFT数据库文件,放入彩虹引擎原生配套数据库。

第二步,核对数据库连接配置文件。打开彩虹引擎服务端的配置文件,找到数据库相关设置项,确认数据库文件名、数据库路径填写正确。彩虹引擎默认使用sqlite数据库,配置文件里指向的数据库文件,必须是引擎自带的sqlite库文件,不能继续指向AFT引擎的数据库。检查配置文件内的数据库路径,路径全程不能带有中文、空格和特殊符号,路径字符异常也会导致读取数据库失败,移动服务端到纯英文数字目录。

第三步,检查数据库文件本身是否损坏。拿到彩虹引擎原版数据库文件之后,查看文件大小,如果文件体积很小,大概率是解压不完整或者文件损坏。关闭电脑防护软件,重新解压完整彩虹引擎资源包,提取里面原始数据库文件,覆盖到服务端DB文件夹。右键DB文件夹,取消只读属性,应用到文件夹内全部子文件,只读权限会阻止引擎读写数据库表结构。

第四步,数据库迁移的处理方式。如果想要保留原来AFT版本里自己修改过的物品数据,不能直接复制数据库文件覆盖。需要借助数据库工具打开AFT引擎数据库,导出StdItems表数据,再打开彩虹引擎原生sqlite数据库,导入导出的物品数据。导入操作时要注意字段匹配,AFT和彩虹引擎的StdItems字段数量、字段名称不完全一致,字段不匹配导入依旧会启动报错。新手不建议手动跨引擎迁移数据,优先使用彩虹引擎自带原始数据库,能避开大量字段兼容问题。

第五步,核对引擎全套配套文件,只替换M2主程序不足以完成引擎更换。更换引擎需要同步替换网关、数据库程序、配置文件、脚本文件。只更换核心程序,保留旧引擎脚本和数据库,会接连出现各类启动异常。打开彩虹引擎资源包,将所有配套程序文件复制到服务端目录,覆盖原有AFT引擎程序,覆盖前确认服务端所有程序全部关闭。

第六步,启动顺序检查。文件替换完成之后,按照彩虹引擎要求的顺序启动程序,先启动数据库服务程序,等待数据库加载完成,再启动主服务程序。启动时观察日志窗口,查看数据库连接状态,确认成功打开数据库,并且读取StdItems表不再提示不存在。如果依旧提示表缺失,打开sqlite数据库查看工具,手动打开目标数据库文件,检查内部数据表列表,确认StdItems表是否真实存在。如果工具打开后表列表为空,说明数据库文件本身无效,重新获取原版数据库文件。

很多架设者更换引擎时只替换主程序,忽略数据库和脚本配套问题,AFT引擎自动重启的问题,不能简单依靠更换引擎解决。更换引擎属于较大改动,整套资源需要配套。优先使用彩虹引擎自带数据库启动测试,先保证服务端可以正常启动,之后再考虑调整物品数据,不要直接沿用旧引擎数据库文件,减少数据库表缺失类报错。完成全部修改操作,重启电脑,再依次启动服务端程序,验证数据库加载状态。