传奇世界单机启动报no such table StdItems修复实录

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

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

看是哪个窗口报的:

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

你贴的报错带 select * from StdItems order by idx,这是 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(BDE Administrator)
控制面板 → 大图标 → 找 BDE Administrator(Win10/11 找不到就去 C:\Program Files (x86)\Borland\Common Files\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. 验证能展开表
重新打开 BDE Administrator,点开 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 就报 no such table。

修法:无极编辑器里“数据库切换”菜单,切到 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:\My Server 都不行。整个目录挪到纯英文路径,BDE 里 PATH 同步改。

十、快速自检清单

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

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