Notes |
|
(0014884)
|
RGF
|
14-11-2014 08:07
(edited on: 14-11-2014 09:01) |
|
файл не прошел по размеру, прилагаю ссылку на внешний источник:
http://rghost.ru/59056401
(http://turbobit.net/0b10syghtllb.html)
|
|
|
|
Как интересно. Ошибок похоже аж две. Сначала ловим експшен при загрузке меток из файла. В одной из строчек:
FCdsMarks.LoadFromStream(FStream);
UpgradeXmlSchema;
FCdsMarks.MergeChangeLog;
FCdsMarks.LogChanges := False;
Где точно неизвестно, потому что при обработке ошибок ловим второй эксепшен. уже внутри InitEmptyDS. На строчках
with FCdsMarks.IndexDefs.AddIndexDef do begin
Name := 'MarkIDIdx';
В общем, нужно сначала лечить проблему в InitEmptyDS, а уже потом проблему загрузки конкретного файла.
|
|
|
(0014887)
|
zed
|
14-11-2014 08:57
|
|
Похоже, тут проблема с одинаковыми id у меток. Из-за чего и вылетает "EDBClient 'Key violation'", а уже дальше оно падает из-за того, что не может создать индекс по этому полю. |
|
|
(0014889)
|
RGF
|
14-11-2014 09:03
|
|
перезалил
http://rghost.ru/59056440 |
|
|
|
>уже дальше оно падает из-за того, что не может создать индекс по этому полю.
Ну вот это и нужно в первую очередь лечить. |
|
|
(0014891)
|
zed
|
14-11-2014 09:28
|
|
Можно полечить, но для решения тикета это никак не поможет. |
|
|
|
Не спорю. Но исправлять обработку ошибок нужно в первую очередь. |
|
|
(0014893)
|
zed
|
14-11-2014 09:43
|
|
|
|
(0014894)
|
zed
|
14-11-2014 09:55
|
|
Мне тут видится только workaround: при открытии БД для импорта, не создавать индексы и игнорировать дублирующиеся id. Тогда можно будет открыть эти метки и импортировать их в пустую базу, но уже с новыми уникальными id. Ну или придумать какой-то метод Repair, который должен попытаться восстановить метки при обнаружении такого рода проблем. |
|
|
(0014895)
|
Garl
|
14-11-2014 09:58
|
|
Категории показывает, а метки нет |
|
|
(0014896)
|
zed
|
14-11-2014 10:09
|
|
В метках конфликт id и эксепшен. |
|
|
(0014897)
|
Garl
|
14-11-2014 10:10
|
|
может сделать вывод сообщения как при дублировании GUID ? |
|
|
|
А почему оно раньше работало? |
|
|
(0014899)
|
zed
|
14-11-2014 10:19
|
|
Потому что раньше не использовался индекс в датасете. Поиск работал перебором но и датасет не сильно возражал против дублирующихся id. |
|
|
|
Ну, ИМХО вариант более толерантного к ошибкам импорта мне кажется вполне нормальным. |
|
|
(0014901)
|
zed
|
14-11-2014 14:32
|
|
> может сделать вывод сообщения
Да, какое-то сообщение нужно выводить.
> вариант более толерантного к ошибкам импорта мне кажется вполне нормальным.
Сделал.
RGF, а каким способом вы создаёте метки? Просто утверждение "При удалении файлов и создании новых путем простановки меток файлы marks.sml Categorymarks.sml создаются и по структуре ничем не отличны от старых" в корне не верно. Содержимое должно отличаться, потому что у старых меток были разнабойные id (в старую базу метки добавлялись/удалялись), а при создании новой базы и импорта/добавления туда меток, id будут увеличиваться строго последовательно. |
|
|
(0014902)
|
RGF
|
14-11-2014 18:21
|
|
Метки создаю стандартными инструментами + экспорт путей из *.plt, *.kml.
Про структуру я имел ввиду xml: теги, заголовки, версию.
Метки и удалялись и добавлялись, конечно. |
|
|
(0014903)
|
zed
|
15-11-2014 05:17
|
|
В общем, если хотите юзать новую версию программы, то берите ночнушку и импортируйте свои метки из sml. |
|
|
(0014904)
|
RGF
|
15-11-2014 07:11
(edited on: 15-11-2014 07:24) |
|
Импортировать через импорт?
Не просто подложив файлы?
Я вроде смотрел, задвоений id нет?
|
|
|
(0014905)
|
Garl
|
15-11-2014 07:24
|
|
задвоение одно есть что щас не помнию но чтото типа id=3026 |
|
|
(0014906)
|
zed
|
15-11-2014 10:40
|
|
> Импортировать через импорт?
Да, именно через импорт. |
|
|
(0014914)
|
RGF
|
17-11-2014 08:10
|
|
спасибо!
руками удалил дубли, все заработало. |
|
|
(0014918)
|
zed
|
17-11-2014 08:58
|
|
> руками удалил дубли
А чего не через импорт? Руками найти дубликаты было наверное весьма трудоёмко. |
|
|
(0014923)
|
RGF
|
17-11-2014 09:18
|
|
На php скриптик написал по разбору xml'я и поиску дублей.
Импортов побаиваюсь иррационально :) |
|