SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002857SAS.Планета[All Projects] Багpublic15-10-2015 15:5403-03-2017 09:11
Reportersheavy 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformWindowsOS7OS VersionProfessional
Product Version151010 
Target Version151111Fixed in Version151111 
Summary0002857: Редактирование базы данны меток двумя пользователями
Description- Добавление меток: Возникает ошибка если один пользователь добавил метку после того как другой пользователь добавил другую метку.

Текст ошибки: EMarkSystemORMError: MarkSystemORM: ID id empty!

- Редактирование меток: если метка была удалена другим пользователем, после сохранения изменений, метка пропадает без объяснения причин. Кажется, есть смысл перед сохранением проверить, есть ли она еще в базе и если нет, сообщить об этом.

- Удаление меток: проходит без ошибок.
Steps To ReproduceОшибка воспроизводится при работе Microsoft SQL через ODBC.
Версия 151410.9122 Nigtly
Additional InformationПользуясь случаем, хотел поблагодарить за инцидент 0002854: Работа с Microsoft SQL через ODBC
TagsБД, метки, многопользоватеская
Attached Files

- Relationships
related to 0002859confirmed Редактирование метки, удаленной другим пользователем 
related to 0003186confirmed Ошибка при многопользовательской работе с базой меток в базе MySql 

-  Notes
(0016569)
zed (manager)
15-10-2015 19:23

О, а это грабли из-за дефолтной оптимизации в mORMot:

> by default, any INSERT will compute the new ID from an internal variable
> - it is very fast and reliable, unless external IDs can be created
> outside this engine
> - you can set EngineAddUseSelectMaxID=true to execute a slower
> 'select max(ID) from TableName' SQL statement before each EngineAdd()
> - a lighter alternative may be to call EngineAddForceSelectMaxID only when required

И при попытке выставить EngineAddUseSelectMaxID в True, как сказано в доках, вылазит ещё какая-то ошибка, опять же, внутри mORMot: "TODBCStatement - TODBCLib error: [24000] [Microsoft][ODBC Driver 11 for SQL Server]Недопустимое состояние курсора (0)". Интересно, что 2 метки даёт поставить, а вот на третьей падает. Надо идти на форум synopse и выяснять что не так...
(0016570)
zed (manager)
15-10-2015 19:33

Показательно, что в тоже самое время, в случае с MySQL всё работает просто замечательно.
(0016573)
sheavy (reporter)
16-10-2015 14:46

Да, и правда, в MySQL гораздо лучше.
Но оказывается даже для него второй пункт актуален:

> - Редактирование меток: если метка была удалена другим пользователем, после сохранения изменений, метка пропадает без объяснения причин. Кажется, есть смысл перед сохранением проверить, есть ли она еще в базе и если нет, сообщить об этом.
(0016574)
zed (manager)
16-10-2015 14:48

>второй пункт актуален:
Это другая проблема и её надо решать отдельно.
(0016575)
vdemidov (manager)
16-10-2015 15:21

Имхо, самый простой способ решать проблемы конфликтов редактирования (а удаление, это тоже частный случай редактирования) это добавить в метку что-то типа версии (например хэш данных, или счетчик из базы данных, или вообще GUID), которое будет автоматически изменяться при каждом сохранении, и перед сохранением проверять не поменялась ли эта версия. И если поменялась (удаление метки сбрасывает версию в 0), то нужно как минимум сообщать об этом пользователю, а как максимум пытаться автоматически мержить изменения (у нас есть предыдущая версия, есть то что в базе сейчас, и есть то что на редактировали). Но это все потребует кучу изменений в самом САС.
(0016576)
zed (manager)
16-10-2015 15:30

Я когда занимался проектированием схемы БД спрашивал - а не добавить ли ещё чего-нибудь. Предложений тогда я так и не услышал. Хотел даже в метки таймштампы писать, но vasketsov меня от этого отговорил. Поэтому, сейчас способа разрешить конфликт редактирования невозможно. Будет сохраняться последнее изменение без всяких вопросов. По поводу удаления редактируемой метки - надо будет посмотреть.
(0016577)
vdemidov (manager)
16-10-2015 15:33

А я, когда говорил что ничего не нужно, подразумевал исключительно однопользовательский режим работы с метками. Поддержку других СУБД ты прикрутил позже. А вообще никто не заставляет использовать одну схему базы для локальной базы и для работы с сервером.
(0016578)
sheavy (reporter)
16-10-2015 15:57

>>второй пункт актуален:
> Это другая проблема и её надо решать отдельно.

сделал отдельный тикет 0002859 (нет прав сделать связь)
(0016602)
zed (manager)
20-10-2015 18:51
edited on: 20-10-2015 18:52

Выяснил что не так: synopse.info/forum/viewtopic.php?pid=18248 - оказывается, помогает отключение встроенного кэширования стейтментов, так что отключил и падать перестало. Возможно это баг фреймворка, так что если его пофиксят, то кэширование можно будет включить назад. И возможно это актуально только для MS SQL, но для надёжности отключил для всех СУБД.


- Users who viewed this issue
User List Anonymous (3179x), stepanxxx (2x), QDeathNick (3x), hrucker (5x), Garl (1x), vdemidov (15x), ingener (1x), zed (24x), sheavy (16x), ygorigor (1x)
Total Views 3247
Last View 19-04-2024 14:41

- Issue History
Date Modified Username Field Change
15-10-2015 15:54 sheavy New Issue
15-10-2015 15:55 sheavy Tag Attached: метки
15-10-2015 15:55 sheavy Tag Attached: многопользоватеская
15-10-2015 15:56 sheavy Tag Attached: БД
15-10-2015 19:23 zed Note Added: 0016569
15-10-2015 19:26 zed Status new => confirmed
15-10-2015 19:33 zed Note Added: 0016570
16-10-2015 14:46 sheavy Note Added: 0016573
16-10-2015 14:48 zed Note Added: 0016574
16-10-2015 15:21 vdemidov Note Added: 0016575
16-10-2015 15:30 zed Note Added: 0016576
16-10-2015 15:33 vdemidov Note Added: 0016577
16-10-2015 15:57 sheavy Note Added: 0016578
16-10-2015 16:32 vdemidov Relationship added related to 0002859
20-10-2015 18:51 zed Note Added: 0016602
20-10-2015 18:52 zed Status confirmed => resolved
20-10-2015 18:52 zed Fixed in Version => 151111
20-10-2015 18:52 zed Resolution open => fixed
20-10-2015 18:52 zed Assigned To => zed
20-10-2015 18:52 zed Product Version .Nightly => 151010
20-10-2015 18:52 zed Target Version => 151111
20-10-2015 18:52 zed Note Edited: 0016602 View Revisions
03-03-2017 09:11 vdemidov Relationship added related to 0003186



Copyright © 2007 - 2024 SAS.Planet Team