|
![]() |
#1 |
Участник
|
С RecId у нас отдельная история.
Сейчас у нас отрицательные RecId, причем мы проходим отрицательные значения уже во второй раз. Т.е. мы прошли положительные, отрицательные, опять положительные и снова перешли на отрицательные. У нас организовано "хитрое" получение RecId из незанятых значений. И дублей у нас нет. Это я к тому, что отрицательные значения не должны были повлиять на внезапное появление этой ошибки. Хотя у меня были сомнения насчет появившихся записей с дублирующимися RecId, которые теоретически могли вызвать подобную ошибку. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Alenka
![]() С RecId у нас отдельная история.
Сейчас у нас отрицательные RecId, причем мы проходим отрицательные значения уже во второй раз. Т.е. мы прошли положительные, отрицательные, опять положительные и снова перешли на отрицательные. У нас организовано "хитрое" получение RecId из незанятых значений. И дублей у нас нет. В идеале, надо бы поймать момент, когда происходит ошибка и посмотреть RecId изменяемых записей, сравнив с RecId уже существующих --------- Кстати, если при повторной попытке сохранения тех же самых данных (или при нескольких повторных попытках) все-так сохранение выполняется, значит проблема точно в генераторе RecId. Точнее, в тех полях, содержимое которых формируется автоматически. Причем при каждой новой попытке сохранения формируются новые значения. Как правило, это характерно только для RecId, но, может быть, у Вас реализовано еще что-то свое.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 01.02.2017 в 13:32. |
|
![]() |
#3 |
Участник
|
Я нашла причину. И она оказалась вовсе не в базе данных, а в коде.
Был добавлен вызов SQL запроса, в котором в начале отключался вывод кол-во полученных строк результата (set nocount on), а в конце забыли его включить (set nocount off). После выполнения запроса любой следующий update любой таблицы выдает ошибку "Вы пытаетесь оперировать с одной записью, но затрагивается большее количество записей. Проверьте индексы, запустите синхронизацию базы данных, или что-либо эквивалентное." Например, выполнение вот такого простейшего job'a приведет к ошибке для следующего update'a любой записи на любой форме. X++: static void probaSetNocountOff(Args _args) { UserConnection connection = new UserConnection(); Statement stmt = connection.createStatement(); ResultSet rSet; str query_; ; query_ = "set nocount on" + "\n" + "select top 1 ItemId " + "from InventTable (nolock) " + "where dataareaID = '" + curext() + "'" + "\n" // + "set nocount off" ; rSet = stmt.executeQuery(query_); while (rSet.next()) { info(rset.getString(1)); } } В общем, сами создаем себе проблемы. Всем спасибо за ответы. |
|
|
За это сообщение автора поблагодарили: olesh (1), S.Kuskov (5). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|