Ошибка SQL7008 - Обходной путь? - PullRequest
6 голосов
/ 22 ноября 2011

Я использую драйвер JTOpen JDBC для универсальной базы данных DB2. У меня очень мало опыта работы с SQL, кроме простых утверждений.

Из этого вопроса я вижу, что полученная ошибка (SQL7008) выдается при попытке «вставить / обновить строки в не журналируемой таблице во время транзакции» (перефразировано).

По словам руководителя проекта, наша БД не регистрируется и не будет в ближайшее время (не спрашивайте меня, почему, я не администратор БД). Тем не менее, я работаю над проектом, в котором возможность commit всего за один раз (а не авто-коммитация при каждом вызове execute) почти необходима (не полностью требуется, но это решит множество проблем) дорога).

Есть ли способ обойти erorr SQL7008 без включения журналирования?

Ответы [ 5 ]

18 голосов
/ 23 ноября 2011

Единственный способ обойти это без включения ведения журнала - отключить изоляцию транзакции в строке подключения следующим образом:

jdbc:as400://systemname;naming=sql;errors=full;transaction isolation=none;date format=iso

Полный список свойств JDBC можно найти в документации Свойства IBM Toolbox for Java .

2 голосов
/ 19 февраля 2015

Я обнаружил, что использование WITH NONE в конце оператора DB2 решает проблему, только если вы используете INSERT.

Когда я пытаюсь использовать SET OPTION COMMIT=*NONE в операторе Delete, кажется, что он пропускаетсягде, и он удаляет все, то же самое происходит, когда я пытаюсь использовать WITH NC или WITH NONE

Чтобы решить эту проблему, выполните одно из следующих действий:

Включить ведение журнала для таблицы базы данных: Windows: добавить параметр CLI «TxnIsolation» со значением «32» в настройках ODBC в разделе «Администрирование».Эту опцию можно найти в разделе: «Источник данных» -> «Дополнительные настройки» -> «Добавить» -> «TxnIsolation» в качестве переключателя «Без фиксации».

AIX / Unix : Запустите следующую команду DB2 в вашей базе данных: 'db2 update cli cfg для раздела, использующего TXNIsolation 32'.Проверьте эти параметры с помощью следующей команды: 'db2 get cli cfg'

Альтернативный обходной путь SQL: (не зависит от ОС): добавьте «WITH NONE» в конец вашей команды SQL UPDATE.

Подробнее ...

1 голос
/ 23 ноября 2011

В строку подключения можно добавить параметр, который отключает контроль фиксации .

Вероятно, CommitMode=0 будет работать.

0 голосов
/ 23 августа 2012

При работе с командами CL. Следующая команда решает проблему:

RUNSQLSTM SRCFILE(LIBNAME/SRCFILE) SRCMBR(MBRFILE) COMMIT(*NONE) NAMING(*SQL) 
0 голосов
/ 23 ноября 2011

Официальный список SQL7008 - здесь (выполните CTRL-F для SQL7008). Похоже, вы можете получить больше информации из кода причины. Если вы получаете код причины 3, похоже, что нет другого выбора, кроме включения ведения журнала.

Если вы получаете что-то кроме кода причины 3, то, я думаю, у вас есть больше вариантов.

Надеюсь, это поможет.

...