Такс, по поводу ошибки в сохранении - почистил таблицу submaps, submap_links, submap_object_positions. Удалили все созданные map'ы кроме default.
Создаем новый map, в качестве root object'a выбираем контейнер с id=10038.
Смотрим таблицы:
Maps:
+--------+----------+---------------------+----------------+
| map_id | map_name | description | root_object_id |
+--------+----------+---------------------+----------------+
| 1 | Default | Default network map | 1 |
| 2 | Test map | #00 | 10038 |
+--------+----------+---------------------+----------------+
Submaps, submap_links, submap_object_positions - пустые. Открываем карту Test map. Двигаем либой объект. Жмем сохранить.
Смотрим таблицу submaps:
+------------+-----------+------------+
| map_id | submap_id | attributes |
+------------+-----------+------------+
| 1635123200 | 10038 | 1 |
+------------+-----------+------------+
Submap_links пустая. Submap_object_positions:
+------------+-----------+-----------+------+------+
| map_id | submap_id | object_id | x | y |
+------------+-----------+-----------+------+------+
| 1635123200 | 10038 | 13 | 20 | 10 |
| 1635123200 | 10038 | 20 | 110 | 10 |
| 1635123200 | 10038 | 22 | 200 | 10 |
| 1635123200 | 10038 | 27 | 290 | 10 |
| 1635123200 | 10038 | 33 | 380 | 10 |
| 1635123200 | 10038 | 35 | 470 | 10 |
| 1635123200 | 10038 | 38 | 560 | 10 |
| 1635123200 | 10038 | 40 | 650 | 10 |
| 1635123200 | 10038 | 42 | 740 | 10 |
... и т.д.
Естественно если мы двигаем еще раз и жмем save, То пишет что ошибка в базе, так как submap_object_positions для map_id=2 почистились а не для 1635123200
Перезагружаем netxmsd, перезапускам консоль. Открываем test map. Видим что даже начальные изменения не прочитались. Двигаем объект, делаем save. Смотрим таблицы:
submaps:
+------------+-----------+------------+
| map_id | submap_id | attributes |
+------------+-----------+------------+
| 1635123200 | 10038 | 1 |
| 2 | 10038 | 1 |
+------------+-----------+------------+
submap_links Пустая, submap_object_positions:
...
| 1635123200 | 10038 | 9792 | 650 | 2290 |
| 1635123200 | 10038 | 9830 | 740 | 2290 |
| 1635123200 | 10038 | 9832 | 830 | 2290 |
| 1635123200 | 10038 | 9834 | 920 | 2290 |
| 1635123200 | 10038 | 9941 | 1010 | 2290 |
| 1635123200 | 10038 | 9977 | 20 | 2404 |
| 2 | 10038 | 13 | 20 | 10 |
| 2 | 10038 | 20 | 110 | 10 |
| 2 | 10038 | 22 | 200 | 10 |
| 2 | 10038 | 27 | 290 | 10 |
| 2 | 10038 | 33 | 380 | 10 |
...
Двигаем еще раз, save проходит успешно. Зыкрываем карту. открываем, видим что изменения не подгрузились. Делаем еще раз save - проходит успешно. Далее меняем в таблице Submaps attributes с 1 на 0 для map_id=2. Перезапускаем netxms. перезапускам консоль. Открываем test map. Видим что последние изменения прочитались. И save теперь тоже работает.
Итог: При создании карты и первом созранении map_id выставляется неверно.
При сохранении в таблицу submaps параметр attributes выставляется в 1 что в дальнейшем мешает ее чтению в дальнейшем.
UPD: Если после создания карты перезапустить Netxmsd - то ошибка выставления Map_id исчезает. Видимо после создания карты неправильно выставляется dwMapId или VID_MAP_ID (пока не разобрался...)
UPD2: По поводу аттрибутов я лажанулся - это не баг 1 значит включен Automatic Layout