15.05.2014, 22:39 | #1 |
Участник
|
Непонятная SQL-ошибка
При учёте документа вылетет временами SQL-ошибка "102",42000" в которой говорится, что произвести INSERT в энную таблицу не получилось из за некорректного синтаксиса возле '{' ( Incorrect syntax near '{' ) Нигде в SQL-запросе не видно этой самой '{' . Дальше в тексте ошибки приводится сам SQL-INSERT-INTO query для энной таблицы с перечислением полей и, что самое непонятное, "VALUES(?,?,?,?,?,?,?), т.е. SQL попытался создать запись засунуть в каждое поле таблицы ?-Joker. При этом NAV-client зависает и онный можно только через Taskmanager -> процессы закрыть. Открываем NAV заново и документ учитывется без проблем. запись в энной таблице (попутная к документу) создаётся путём TRANSFERFIELDS, в записи-источнике (т.е. из которой данные через TRANSFERFIELDS копируются в энную таблицу) поля заполнены. Дебужить не получается, т.к. воспроизвести ошибку нарочно не смогли. Кто-нибудь встречался с подобным, как такое лечить? NAV-Верисия: 5.0 SP1 |
|
16.05.2014, 01:47 | #2 |
Administrator
|
новый сервер?
новый Нав? новая функциональность? новый пользователь? автосплиткей никакой не добавляли? небыло ошибки и вдруг на тебе? |
|
16.05.2014, 11:06 | #3 |
Участник
|
Цитата:
Проблема найти баг: по идеее если ошибка в программном коде, то она должна вылетать всегда. А так: вылетает ошибка => закрываем NAV через taskmanager (иначе никак) => открываем NAV => учёт проходит без ошибки. Если бы юзер между делом изменил данные (типа поставил/убрал какую-нибудь галочку), тогда понятно, но данные не меняются, а ошибка то вылетает то нет. Автосплиткей не добавляли, есть единственное integer-поле для автосплиткей в обеих таблицах (в таблице-источнике и в конечной таблице, куда данные передаются). И каким макаром может быть в нём причина? Ведь автосплиткей = property формы, причём форма для конечной таблица Editable=No и вызыватеся эта форма в карточке учтённого документа Ошибка то вылетает при учёте документа, у юзера открыта только карточка документа. Подозреваю что дело в TRANSFERFIELDS, т.к. производится дефолтно с TRUE. Или Вы имели в виду поле с Автоинкремент? С ним тоже можно воспроизвести чудную SQL-ошибку, но в нашем случае отпадает, т.к. у полей AutoIncrement=No |
|
16.05.2014, 11:51 | #4 |
Administrator
|
да, я имел в виду Автоикремент, просто перепутал, спасибо.
в стандартную таблицу инсерт не всегда проходит, или в новую? тупо обрывов связи не может быть? чаще учитывается, или чаще не учитывается? даже не знаю куда еще копать... /> |
|
10.06.2014, 07:13 | #5 |
Участник
|
Включать SQL Profiler и снимать trace пробовали?
|
|
10.06.2014, 07:18 | #6 |
Участник
|
Версию SQL сервера приведите
|
|
10.06.2014, 17:20 | #7 |
Участник
|
|
|