powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Ошибка сериализации
48 сообщений из 48, показаны все 2 страниц
Ошибка сериализации
    #34948896
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги! Никому не попадалясь такая ошибка? Один пользователь вставляет строку в таблицу, а у другого, при вставке в эту же таблицу, такая фигня выскакивает. Ошибка появляется не регулярно.

[Sybase][ODBC Driver]Serialization failure: user 'Kilinskaya' has the row in 'TLK_O_demands' locked
No changes made to database.
INSERT INTO "DBA"."TLK_O_demands" ( "client_id", "direction_id", "status", "note" ) VALUES ( ?, ?, ?, ? )

ASA 5.5, PB 6.5
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34949225
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod....'TLK_O_demands' locked
No changes made to database.
....
У тебя же написано - таблица залокирова. Почему - надо смотреть. Возможно в момент вставки строки триггером запускается какой-либо процесс ( или проверки, или записи, или ... ), который и локирует таблицу. Надо разбираться, а решение проблемы - скорее всего запись в таблицу имеет смысл сделать через процедуру, которая будет ждать, когда таблица освободится и локирование будет снято ( при условии, что локирование необходимо и прекращается после завершения процесса вставки строки ).

Good Luck !
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34949405
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или просто не сделали коммит
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34949454
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.или просто не сделали коммит
Точно,
хотя смущает :
DRod... Ошибка появляется не регулярно....

Good Luck !
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34949702
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChV Dmitry.или просто не сделали коммит
Точно,
хотя смущает :
DRod... Ошибка появляется не регулярно....
Ну допустим есть два окна. В одном при сохранении есть коммит, в другом нет.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34950019
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky ChV Dmitry.или просто не сделали коммит
Точно,
хотя смущает :
DRod... Ошибка появляется не регулярно....
Ну допустим есть два окна. В одном при сохранении есть коммит, в другом нет.
Да ради бога. Пусть будет. Это же всё наши предположения, а что у него там, только он и сможет разобраться. Вообще понятно, что, если ошибка фиксируется, то это легкий случай и копать не трудно. Хуже, если ошибка проявляется только "в динамике", в реальной работе, при большой загрузке.

Good Luck !
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34952199
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У sqlca или через что там идёт транзакция
SQLCA.autocommit=true
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34952811
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соединение в приложении:
SQLCA.autocommit=false;
option blocking=off;
option isolation_level = 0;

В DW под событие dberror стоит ROLLBACK; и сообщение "Повторите попытку...".
Под кнопкой "Сохранить":
ll_ret = dw.Update()
if ll_ret <> 1 then
MessageBox("Ошибка","Нельзя записать ЗАГОЛОВОК документа!)
return
end if
COMMIT;

Разные пользователи работают с этим DW. При одномоментном Update() пользователей:
- либо всё нормально,
- либо один из пользователей "намертво" блокирует таблицу и все остальные "сосут лапу", т.к. наступает событие dberror (см текст ошибки).

Блокировка таблицы продолжается пока заблокировавший пользователь не выйдет из приложения, т.е. разорвёт соедиенение.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34952855
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod wrote:

> ll_ret = dw.Update()
> if ll_ret <> 1 then
> MessageBox("Ошибка","Нельзя записать ЗАГОЛОВОК документа!)

Голосую: убить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34952879
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
DRod wrote:

> ll_ret = dw.Update()
> if ll_ret <> 1 then
> MessageBox("Ошибка","Нельзя записать ЗАГОЛОВОК документа!)

Голосую: убить.
Posted via ActualForum NNTP Server 1.4
To Dim2000. Кого убить?

Всем. Не можети ли такая ошибка возникать из-за нестабильности сети?
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34952910
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю,что это блокировка в таблице кластерного индекса.
Инсерт,по жизни,комманда лёгкая,если этот кластер не надо пересчитывать,он же должен быть отсортирован,а под ним ещё одна вспомогательная таблица-тоже сортируется.А селект,значит,тоже идёт по этому индексу,вот они там и стыкуются вмертвую.
Я б посоветвал бы кластарный поменять на некластарный-так,для эксперемента,с понтом,чо будет.У некластерного индекса свои минусы есть,но он хоть дед блоки не генирирует.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34952955
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KOLCHOZ_POSTEVENTЯ думаю,что это блокировка в таблице кластерного индекса.
Инсерт,по жизни,комманда лёгкая,если этот кластер не надо пересчитывать,он же должен быть отсортирован,а под ним ещё одна вспомогательная таблица-тоже сортируется.А селект,значит,тоже идёт по этому индексу,вот они там и стыкуются вмертвую.
Я б посоветвал бы кластарный поменять на некластарный-так,для эксперемента,с понтом,чо будет.У некластерного индекса свои минусы есть,но он хоть дед блоки не генирирует.
To KOLCHOZ_POSTEVENT. Спасибо. Попробую "поиграть" с индексами.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34953061
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod wrote:

> To Dim2000. Кого убить?

Того, кто это написал.

> Всем. Не можети ли такая ошибка возникать из-за нестабильности сети?

Нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34953072
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod wrote:

> To KOLCHOZ_POSTEVENT. Спасибо. Попробую "поиграть" с индексами.

Ты бы хоть мозги для начала включил. Какие ещё в пятёрке кластерные
индексы???
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34953251
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
а как насчет уровня изолированости транзакций ?
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34953380
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
DRod wrote:

> To KOLCHOZ_POSTEVENT. Спасибо. Попробую "поиграть" с индексами.

Ты бы хоть мозги для начала включил. Какие ещё в пятёрке кластерные
индексы???
To Dim2000. А зачем тогда ты мне про них пишешь?
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34953381
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+/-а как насчет уровня изолированости транзакций ?
To +/-. Уровень изоляции - 0.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34953432
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod wrote:

> To Dim2000. А зачем тогда ты мне про них пишешь?

Я пишу??? Вообще-то про них писал KOLCHOZ_POSTEVENT, я же уверен в том,
что это проблема кривонаписанного клиента, и сервер вообще трогать не надо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954011
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Релиационная база без кластерных индексов?Такое бывает?
Допустим.
А Primary Key там тоже нет?Так это тоже самое.Или почти тоже самое,за редким исключением.
Можно,конечно,поискать проблемму на кляенте,но сообщение,вообще-то, от сервера.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954042
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
To DRod
<Censored> Тебе же указали, что перед месагой надо ролбэк вставить.
<Censored>

Модератор: Давайте, всетаки, будем сдерживать эмоции, ладно?
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954245
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOLCHOZ_POSTEVENT wrote:

> Релиационная база без кластерных индексов?Такое бывает?

Бывает. По факту - кластерные индексы появились в 8.0.2, у автора топика
- пятёрка.

> А Primary Key там тоже нет?

Надеюсь, что у автора есть. Хотя таблицы без ПК не запрещены.

> Так это тоже самое.Или почти тоже самое,за редким исключением.

Обоснуй. Ответ "от обоснуя и слышу" не канает .
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954422
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю,смогу ли.
Тот учебник,по которому я держу свои базы,он про ASE.
Наверное,для этой версии,что у автора, он не актуален.
Переписываю от руки.

Unique and Primary Key constraints both create a unique index,unique(констрейнт имеется в виду)alows null values,while primary key does not.Unless overriden with noncluctered or clustered,unique creates a non clustered index,and primary key a clustered index(except when a clustered index already exists).
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954460
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте переведём для широкого пользователя.

Unique констрайнт и Primary Key констрайнт оба создают уникальный индекс,Unique констрайнт позваляет вводить null,Primary Key нет.Если не отвергть (значения,по умолчанию в команде Alter Table)nonclusatred clustered ,то Uniqiue создаёт некластерный индекс,а primary кластерный(исключая случаи,когда кластерный уже существует).
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954550
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOLCHOZ_POSTEVENT wrote:

> Тот учебник,по которому я держу свои базы,он про ASE.

Дальше можно читать только для общего развития, ибо обсуждается совсем
другой продукт ;).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34954742
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я To DRod
Тебе же указали, что перед месагой надо ролбэк вставить.


To Я:
Читай внимательнее. Я писал:
"В DW под событие dberror стоит ROLLBACK; и сообщение "Повторите попытку..."."
Т.е. если происходит ошибка - делается откат. Если нет ошибки - подтверждение транзакции.


Первичный ключ на таблицу есть.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34955075
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если его можно заменить каким-то индексом,который не подразумевает того,что он отсортирован-я бы посоветовал попробывать.Убрать совсем-разве что,если таблица небольшая-только для эксперемента,да и то не очень корректного-инсерты пойдут на ура,селекты будут застревать,но не смертельно,если таблица до 1000,так скажем.Мёртвых блокировок не то что бы не будет-скажем так,не должно быть.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34956871
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищи кто кого блокирует на уровне базы.
какая база-то?
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34957372
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нет обработок по триггеру, через процедуру вставлять строки не хочется, а проблема не решается, то может все таки попробовать сделать то, что советовали в самом начале ?

SQLCA.autocommit=True
, ну и немного изменить обработку :
DRodСоединение в приложении:
SQLCA.autocommit=false;
....
В DW под событие dberror стоит ROLLBACK; и сообщение "Повторите попытку...".
Под кнопкой "Сохранить":
ll_ret = dw.Update()
if ll_ret <> 1 then
MessageBox("Ошибка","Нельзя записать ЗАГОЛОВОК документа!)
return
end if
COMMIT;
....
Блокировка таблицы продолжается пока заблокировавший пользователь не выйдет из приложения, т.е. разорвёт соедиенение.
Конечно не мое собачье дело, но если произошло событие "DBERROR", то есть необходимость в ROLLBACK ? Или необходимо обеспечивать запись только блока строк ?
Во вторых, даже если autocommit=false, почему бы после этих операций не "разорвать соедиенение" самому, без выхода из приложения ?
Да и воспользоваться, не SQLCA, а своей транзакцией, которую потом можно и уничтожить ( для гарантии :-) ) ?

Transaction tran
tran = CREATE Transaction
...
tran.autocommit=false
...
COMMIT USING tran;
DISCONNECT USING tran;
DESTROY tran

И в третьих - у нас похожая проблема добавления связанных записей в нескольких таблиц, при которой происходить куча проверок, добавление вычисляемых значений, работа триггеров, при одновременной работе большого количества пользователей - успешно решается при использовании процедуры ( Microsoft SQL ).

CREATE PROCEDURE ....
.....
select @lock=1
while (@lock=1)
select @lock=lock from aaaaaaa
BEGIN TRANSACTION
update aaaaaaa set lock=1
.....
if @@error<>0
begin
Rollback transaction
return
end
.......
update aaaaaaa set lock=0
......
COMMIT TRANSACTION
......
GO


Good Luck !
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34958124
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry.ищи кто кого блокирует на уровне базы.
какая база-то?
См [4933666] вверху страницы:
- В сообщении об ошибке указано имя пользователя,
- Adaptive Server Anywhere 5.5.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34958271
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod wrote:

> - Adaptive Server Anywhere 5.5.

Сразу видно глубину знаний (точнее, отсутствие таковой).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34958402
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Chv
1) SQLCA.autocommit=False. Это мне досталось о предыдущих поколений программистов, разрабатывавших данную корпоративную систему. "...Иных уж нет, а те - далече...". Боюсь поменять на autocommit=True.
"...есть необходимость в ROLLBACK?...". А как же завершить транзакцию? Можно откат поставить после dw.Update(), но я ставлю в событие "DBERROR".
2) Пробовал уничтожать транзакционный объект. Не помогло.
3) Добавление записи не на уровне приложения (DataWindow), а на уровне базы данных (процедура), мне кажется самый перспективный путь решения моей проблемы. Буду пробовать...
Спасибо за конструктивные предложения!
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34958497
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod wrote:

> 1) SQLCA.autocommit=False. Это мне досталось о предыдущих поколений
> программистов, разрабатывавших данную корпоративную систему. "...Иных
> уж нет, а те - далече...". Боюсь поменять на autocommit=True.

И не нужно. Транзакции - вещь довольно полезная в хозяйстве ;).

> Можно откат поставить после dw.Update(), но я ставлю в событие "DBERROR".

Нужно поставить после Update(). Или вообще переписать эту халтуру на
Embedded SQL.

> 3) Добавление записи не на уровне приложения (DataWindow), а на уровне
> базы данных (процедура), мне кажется самый перспективный путь решения
> моей проблемы.

Стрельба из пушки по воробьям.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34958591
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChVесли произошло событие "DBERROR", то есть необходимость в ROLLBACK ? Или необходимо обеспечивать запись только блока строк ?

Rollback всегда нужно делать после неуспешного dw.Update() (и не в dberror, а после Update() )
Это связано с тем, что в этом случае статусы измененных строк в DW не сбрасываются и если не сделать rollback, то при последующих Update() произойдет повторное проведение операций DML, что в случае Insert вызовет ошибку из-за дубля Primary key, а в случае Delete/Update - Row changed between retrieve and update (в DW с настройками update по умолчанию).
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34958642
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
то есть, кто то нажмет два раза сохранить и получит ту ошибку о которой идет речь?
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34959061
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. "[Sybase][ODBC Driver]Serialization failure: user 'Kilinskaya' has the row in 'TLK_O_demands' locked"
не помню такой ошибки. по моему это не родной АСА драйвер... что пользуем?

2. запустите утилиту dbwatch чтобы посмотреть коннекты и у кого сколько незакомиченых транзакций.
альтернативная утилита для АСА 5.0 есть здесь

3. помнится в аса при определенном уровне чтения (isolation level) после ретрайва данных лочились записи.
так что на "retrieve end" приходилось вешать роллбек или коммит. какой isolation level ?

4. если в DW стоит "Retrieve As Needed" то этот DW на ретрайве может блокировать строки т.к. держит открвтвм курсор.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34959574
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Dmitry
1) SQLDBCODE[-210]. ASA 5.5.
2) Спасибо за DbWatch+.
3) isolation level = 0.
4) "Retrieve As Needed" не указаною
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34959632
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то абсурд. Мы делаем коммиты там и роллбеки всякие а блокировки стоят намертво пока из приложения не выйдем? Так не бывает.
Есть тут спецы по ASA которые в курсе как там с вложенными транзакциями.
Такое можно было бы устроить с MSSQL если начать транзакцию, потом начать вложенную. но даже в этом случае при первом же ROLLBACK блокировки снимаются.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34959678
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRod ,
начните с того, что научитесь стабильно повторять ошибку.
В 90% случаев после этого будет ясно, что надо исправить.

А пока ошибка нестабильна - это все гадание на кофейной гуще.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34960236
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не особо спец в ASA, но можно было бы проверить, что из блокировок используется на таблицу APL или Datarow
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34960289
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky ChVесли произошло событие "DBERROR", то есть необходимость в ROLLBACK ? Или необходимо обеспечивать запись только блока строк ?

Rollback всегда нужно делать после неуспешного dw.Update() (и не в dberror, а после Update() )
Это связано с тем, что в этом случае статусы измененных строк в DW не сбрасываются и если не сделать rollback, то при последующих Update() произойдет повторное проведение операций DML, что в случае Insert вызовет ошибку из-за дубля Primary key, а в случае Delete/Update - Row changed between retrieve and update (в DW с настройками update по умолчанию).
Неуспешные dw.Update() я отрабатываю, но спасибо, буду иметь ввиду. "Век живи - век учись, а ..."

Good Luck !
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34960308
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001 wrote:

> проверить, что из блокировок используется на таблицу APL или Datarow

Блин. У человека SA 5.5, при чём тут все эти ASEшные заморочки???
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34960406
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрей wrote:

> Какой-то абсурд. Мы делаем коммиты там и роллбеки всякие а блокировки
> стоят намертво пока из приложения не выйдем? Так не бывает.

Мой опыт показывает, что блокировки там, где их не ждали, возникают по
одной из 2 причин:

1) не сделан COMMIT/ROLLBACK после INSERT/UPDATE/DELETE;
2) временно поднят и не опущен уровень изоляции.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34961559
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky DRod ,
начните с того, что научитесь стабильно повторять ошибку.
Эх! Если бы я мог повторять ошибку, я бы конечно её нашёл и исправил.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34961917
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRodЭх! Если бы я мог повторять ошибку, я бы конечно её нашёл и исправил.
Поставьте юзерам где наблюдаются ошибки и блокировки отладочную версию программы, где протоколируйте каждое действие юзера (пункты меню, действия с документами - открытие, создание, сохранения, выход без сохранения, и т.д. вплоть до изменения каждого поля), каждый messagebox. Потом по логу пытайтесь повторить и детализируйте лог если не удается повторить ошибку.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34961941
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно пойти и немного другим путем: найти все места в программе с операторами commit/rollback и протоколировать их вызов и какая ф-я вызывала.
Потом после возникновения ошибки анализировать этот лог сравнивая его с логом полученным без ошибки.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34962273
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Anatoly Moskovsky
Спасибо. Буду записывать в лог контрольные точки с именами пользователей и компьютеров после:
- begin transaction,
- rollback,
- commit.
Затем буду анализирвать лог.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #34962637
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DRodБуду записывать в лог контрольные точки с именами пользователей и компьютеров после:
- begin transaction,
- rollback,
- commit.
Затем буду анализирвать лог.
Есть еще места где commit/rollback происходят неявно - disconnect/re-connect/ и потенциально Execute Immediate (с DDL).

У меня был случай, когда кодер вместо того, чтобы использовать специально выделенный метод of_getconnect, в котором сеансы повторно использовались, по незнанию использовал просто connect using. И другой код, в котором по ошибке не было commit, по случайности работал верно из-за неявного коммита при disconnect.
Когда же код привели в соответсвие со стандартом, в том коде, где не было коммита вылезло непонятное поведение.
...
Рейтинг: 0 / 0
Ошибка сериализации
    #35097421
DRod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ларчик вот так открывался:

SQLCA.DBParm = "ConnectString='...' " + ",CursorLock='OptValue',CursorScroll='Dynamic' "

В хелпе PB6.5 параметр соединения CursorScroll (ODBC) DBParm:

Dynamic scrolling in SQL Anywhere 5.x and Watcom SQL 4.0b If you are accessing a SQL Anywhere Version 5.x or Watcom SQL Version 4.0b database and want to execute an embedded SQL FETCH FIRST, FETCH PRIOR, or FETCH LAST statement when you retrieve a row from a cursor, you must set CursorScroll to 'Dynamic'. Otherwise, the default for these DBMSs is to do forward scrolling (FETCH NEXT) only.

Спасибо моему другу "Великому GAA"!
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Ошибка сериализации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]