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 (2037x), hrucker (5x), Garl (1x), vdemidov (15x), ingener (1x), zed (24x), sheavy (16x), ygorigor (1x)
Total Views 2100
Last View 09-04-2020 16:47

- 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 - 2020 SAS.Planet Team