Procedures to fix Fatal: Can't init terrain list (mirror path=""). Terminating.

1
This is a common error I used to have when I didn't really know how to do proper restores. I recently had it while trying to save character inventories but do a full map change.

There are a few variations on this error but all of them have the same fix more or less. Heres the most recent one i ran into

WARN 2019-05-19 03:37:16.901 {02} <createWorld> [0] DB::noRS(0 ms) COMMIT;
WARN 2019-05-19 03:37:16.901 {02} <createWorld> [0] DB::noRS(0 ms) START TRANSACTION;
WARN 2019-05-19 03:37:16.901 {02} <createWorld> [0] DB::RS(0 ms) SELECT `ObjectsVersion` FROM `terrain_blocks` WHERE `ID`=449
WARN 2019-05-19 03:37:16.933 {02} <createWorld> [0] DB::RS(32 ms) SELECT `Version`, `Action`, `ObjectSuperType`, `ObjectID`, `ObjectTypeID`, `GeoDataID`, `TurnAngle`, `Altitude`, `OffsetX`, `OffsetY`, `OffsetZ`, `IsComplete` FROM `objects_patch` WHERE `TerID`=449 and `Version` > 0 ORDER BY `Version`
WARN 2019-05-19 03:37:16.933 {02} <createWorld> [0] DB::noRS(0 ms) COMMIT;
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] [line #6525] CmChangeStore::setLastChangeID() - new version of objects is less than version of current changes for terid=449 (db=1, curr=8330)
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] [line #5465] CmChangeStore::_loadDbChanges() - can't set last version
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] [line #4545] CmChangeStore::init() - can't read all patches from db(terid=449)
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] [line #337] CmPatcher::attachTerrain() - can't init CmChangeStore class. terID=449
INFO 2019-05-19 03:37:17.010 {02} <createWorld> [0] CmPatcher::detachTerrain(449) -- removing previous store!
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] [line #6133] TerrainDeformer::_attachTerrain() - can't register terrain#449 within patcher
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] Fatal: Can't init terrain list (mirror path=""). Terminating.
ERRR 2019-05-19 03:37:17.010 {03} <[shutdownRequest]quit> [0] Quit requested!!!

The main lines you want to pay attention to are these
WARN 2019-05-19 03:37:16.901 {02} <createWorld> [0] DB::RS(0 ms) SELECT `ObjectsVersion` FROM `terrain_blocks` WHERE `ID`=449
and
ERRR 2019-05-19 03:37:17.010 {02} <createWorld> [0] [line #6525] CmChangeStore::setLastChangeID() - new version of objects is less than version of current changes for terid=449 (db=1, curr=8330)

Where 'objectsVersion' it can be anything that has a table tied to 'terrain_blocks' (i.e forestVersions (in the forest_patch table) or GeoVersion (in Geo_patches)

the way you fix this error is by setting the number given in the second line: (db=1, curr=8330)
The DB = 1 but the version in the objects_patch table is 8330
you take the 8330 number and go to the 'terrain_blocks' table and set that number to the corresponding row and column
in this case it is row 449 and column 'ObjectsVersion'

you keep repeating this process until all terrain version (442-450) have been covered, at this point the server should run (unless a different error pops up)

This applies to any other possible version number mismatches and should fix any major mishaps with primarily DB restores and special cases like mine where i wanted to switch to a new map but keep the characters. Which ill be covering in a different post.
Henri / CaptZimecki
Server Owner | Seraphim Isles