当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇世界单机启动报nosuchtableStdItems修复实录

热度:
报错停在“正在加载物品数据库”然后抛nosuchtable:StdItems,本质就一句话:DBServer没在它认为该读的地方读到StdItems这张表。不是M2脚本问题,不是客户端问题,先别动Envir和补丁。

一、先确认报错发生在哪一环

看是哪个窗口报的:

DBServer黑窗报nosuchtable:StdItems→数据库层没读到,根因在Mud2\DB或DBC配置
M2Server报select*fromStdItems失败→DBServer没把表暴露出来,先修DBServer
登录器能进、选人后崩→那是另一回事,不是这张表的问题

你贴的报错带select*fromStdItemsorderbyidx,这是DBServer在查库,问题100%在数据库文件或数据库驱动层。

二、检查Mud2\DB里到底有没有文件

进服务端目录,找实际放库的文件夹,常见两个位置:

D:\MirServer\Mud2\DB
D:\MirServer\Mir200\Mud2\DB

打开看里面有什么,分两种情况:

情况A:老Hero/Blue/传统引擎
应该有这三个文件:

StdItems.DB
Magic.DB
Monster.DB

缺任何一个都报表不存在。文件大小正常是几十KB到几百KB,0字节也算缺失。

情况B:GOM/GEE新引擎
可能只有一个整库文件:

GOM系:HeroDB.MDB(Access)
GEE系:GEEM2.DB(SQLite)
部分V8:ApexM2.DB

这时候目录里没有单独的StdItems.DB是正常的,引擎把三张表塞进一个文件里。

三、老引擎走DBC2000的修法

1.关杀软,查隔离区
Defender、火绒、360常把StdItems.DB当可疑文件删。整个D:\MirServer加白名单,隔离区里有的恢复出来。

2.看文件权限
右键Mud2\DB文件夹→属性→取消只读→安全→当前用户完全控制。

3.配DBC2000(BDEAdministrator)
控制面板→大图标→找BDEAdministrator(Win10/11找不到就去C:\ProgramFiles(x86)\Borland\CommonFiles\BDE\bdeadmin.exe)。

左侧Databases右键New→类型STANDARD→重命名别名:

HeroDB

大小写严格,herodb/HeroDb都不认。

右边参数:

TYPE=STANDARD
PATH=D:\MirServer\Mud2\DB(指向DB文件夹本身,不是Mud2,不是MirServer)
LANGDRIVER=Chinese(PRC)ANSI
ACTIVE=True

Ctrl+S保存,关窗口点Yes。

4.验证能展开表
重新打开BDEAdministrator,点开HeroDB别名,能看到StdItems、Magic、Monster三张表,表里能看行数据,说明驱动通了。看不到表就是PATH指错或者文件损坏。

5.清BDE锁文件
删掉:

C:\Windows\System32\PDOXUSRS.NET
C:\Windows\SysWOW64\PDOXUSRS.NET(64位系统)

结束任务管理器里残留的DBServer.exe、M2Server.exe,再起服务。

四、新引擎(GOM/GEE)走内置库的修法

如果Mud2\DB里只有HeroDB.MDB或GEEM2.DB,就别配DBC2000了,DBC配了也没用。

打开GameCenter.exe(引擎控制器)→配置向导:

数据库类型:选Access(GOM)或SQLite(GEE)
数据库文件:浏览选到Mud2\DB\HeroDB.MDB或GEEM2.DB
数据库名称:留空或按配置器默认,不要硬填HeroDB

保存配置,重启控制器。

如果控制器里没数据库类型选项,去找DBServer\DBConfig.ini,手动改:

DBType=Access;或SQLite
DBFile=D:\MirServer\Mud2\DB\HeroDB.MDB

改完保存。

五、引擎配置和DBC别名必须对得上

不管哪种引擎,三处名字要一致:

1.BDE里别名:HeroDB
2.GameCenter配置向导里“数据库名称”:HeroDB
3.!Setup.txt或DBConfig.ini里DBCName/DBPath参数

检查!Setup.txt:

DBCName=HeroDB
DBPath=D:\MirServer\Mud2\DB

末尾别多空格,路径用反斜杠\,不用斜杠/。

六、文件损坏或无极数据库编辑器踩坑

如果你用无极数据库编辑器改过数据,注意:

老版本带DBC三文件(StdItems.DB、Magic.DB、Monster.DB)
新版本可能是Access/SQLite单文件

编辑器打开时默认先读DBC,如果你版本实际用Access,它会读错库,改了不生效,甚至把空库当当前库,启动时查StdItems就报nosuchtable。

修法:无极编辑器里“数据库切换”菜单,切到Access或SQLite,确认读的是HeroDB.MDB/GEEM2.DB。或者把Mud2\DB里多余的StdItems.DB、Magic.DB、Monster.DB三个空文件删掉,让编辑器强制读整库文件。

七、解压不完整兜底

Mud2\DB里文件全没有,或只有空壳:

从原下载压缩包重新解压Mud2\DB目录覆盖(先备份自己改过的)
没有原包,找同引擎同版本的完整库包,注意GOM不能拿Hero老DB硬套,字段结构不一样
覆盖前结束DBServer、M2Server进程,不然文件占用覆盖失败

八、启动顺序再确认

修完按这个顺序起:

1.任务管理器杀干净DBServer.exe、M2Server.exe、各网关进程
2.起DBServer.exe→看黑窗出“数据库启动成功/物品数据加载完成”
3.再起LoginSrv→LoginGate→SelGate→RunGate
4.最后起M2Server

DBServer没起来就起M2,必报StdItems读不到。

九、还报错的最后两招

1.注册表BDE共享内存
regedit搜SHAREDMEMLOCATION,值改成0x5BDE,重启电脑。

2.路径含中文/空格
D:\MirServer可以,D:\传奇世界、D:\MyServer都不行。整个目录挪到纯英文路径,BDE里PATH同步改。

十、快速自检清单

Mud2\DB里有StdItems.DB(或HeroDB.MDB/GEEM2.DB)
文件不是0字节,没被杀软隔离
BDE别名HeroDB,PATH精确到DB文件夹
引擎配置向导数据库名和BDE一致
!Setup.txt的DBPath和实际路径一致
DBServer先起,出“数据库启动成功”再起M2

这六条过一遍,nosuchtable:StdItems基本都能消。问题不在M2脚本也不在客户端,死磕数据库层就行。
[顶部]