Anonymous | Login | Signup for a new account | 21-11-24 21:59 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0002857 | SAS.Планета | [All Projects] Баг | public | 15-10-2015 15:54 | 03-03-2017 09:11 | ||||
Reporter | sheavy | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | Windows | OS | 7 | OS Version | Professional | ||||
Product Version | 151010 | ||||||||
Target Version | 151111 | Fixed in Version | 151111 | ||||||
Summary | 0002857: Редактирование базы данны меток двумя пользователями | ||||||||
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 | |||||||||||
|
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 (3536x), stepanxxx (2x), QDeathNick (3x), hrucker (5x), Garl (1x), vdemidov (15x), ingener (1x), zed (24x), sheavy (16x), ygorigor (1x) |
Total Views | 3604 |
Last View | 21-11-2024 21:59 |
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 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |