| Anonymous | Login | Signup for a new account | 25-10-25 23:49 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] Баг / Bug | 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 (4359x), stepanxxx (2x), QDeathNick (3x), hrucker (5x), Garl (1x), vdemidov (15x), ingener (1x), zed (24x), sheavy (16x), ygorigor (1x) |
| Total Views | 4427 |
| Last View | 25-10-2025 23:49 |
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 |
| 08-08-2025 13:22 | zed | Category | Баг => Баг / Bug |
| My View | View Issues | Change Log | Roadmap | Search |
| Copyright © 2007 - 2025 SAS.Planet Team |