SQLCODE=-104, SQLSTATE=42601, SQLERRMC=таблица;реорганизация ;СОЕДИНЕНИЕ

#db2

#db2

Вопрос:

при выполнении этого запроса в db2 на DBeaver :

reorg table departments

я получил эту ошибку (только на внешнем канале):

DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=table;reorg ;JOIN lt;joined_tablegt;, DRIVER=4.19.49

  1. что означает этот запрос?
  2. как я могу исправить ошибку?

обратитесь за любой помощью.

Ответ №1:

Попробуйте call sysproc.admin_cmd('reorg table db2inst1.departments') , как вы используете DBeaver, который является приложением jdbc.

Если вы не определяете имя таблицы (например, с помощью db2inst1), то Db2 будет считать, что определитель (имя схемы) совпадает с именем идентификатора пользователя, которое вы использовали при подключении к базе данных.

DBeaver выполняет инструкции SQL, но он не может напрямую запускать команды Db2 — вместо этого любое приложение jdbc может запускать Db2-команды косвенно через вызываемую вами хранимую процедуру. ВЫЗОВ представляет собой инструкцию SQL.

Это reorg table команда, это не инструкция SQL, поэтому ее необходимо запустить с помощью admin_cmd хранимой процедуры, или ее можно запустить из командной строки операционной системы (или db2 clp) после подключения.

Так что, если у вас есть db2cmd.exe в MS-Windows или bash в linux/unix вы можете подключиться к базе данных и выполнять команды с помощью команды db2.