powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Перенос БД с помощью db2move с опцией copy
12 сообщений из 12, страница 1 из 1
Перенос БД с помощью db2move с опцией copy
    #34773969
dealko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переношу данные с Windows на Linux.

Использую db2move с опцией copy.

Начинаю работать с новой БД на Linux.
Код: plaintext
insert into PANBET.SESSION (USERID) values ( 4 )
Вылетает ошибка:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0803N One or more values in the INSERT statement, UPDATE statement, or
foreign key update caused by a DELETE statement are not valid because the
primary key, unique constraint or unique index identified by "1" constrains
table "PANBET.SESSION" from having duplicate values for the index key.
SQLSTATE=23505


unique index 1 - это первичный ключ.

DDL таблицы такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE "PANBET  "."SESSION"  (
		  "ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (  
		    START WITH + 1   
		    INCREMENT BY + 1 
		    MINVALUE + 1   
		    MAXVALUE + 2147483647   
		    NO CYCLE  
		    NO CACHE  
		    NO ORDER ) , 
		  "USERID" INTEGER NOT NULL )   
ALTER TABLE "PANBET  "."SESSION" 
	ADD CONSTRAINT "PK_SESSION" PRIMARY KEY
		("ID");

В чём ошибка ? Что сделать чтобы не было при переносе данных проблем с первичными ключами и внешними ключами ?

Как я понимаю при использовании опции copy используется LOAD c GENERATED OVERRIDE и всё должно работать...
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34774288
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор CREATE TABLE "PANBET "."SESSION"


Это не временная ли таблица которая создается только для текущего соединения(сессии) ?
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34774465
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать найти максимальный ID + 1
Код: plaintext
1.
SELECT MAX(ID) +  1 
FROM PANBET.SESSION
Затем:
Код: plaintext
ALTER TABLE EXP.WORKER ALTER COLUMN ID RESTART WITH <max_id>
Где max_id - результат первого запроса.
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34774474
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон,
Код: plaintext
ALTER TABLE PANBET.SESSION ALTER COLUMN ID RESTART WITH <max_id>
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34775374
dealko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогло, спасиб.
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34775442
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dealko
1.
В чём ошибка ? Что сделать чтобы не было при переносе данных проблем с первичными ключами и внешними ключами ?

2.
Как я понимаю при использовании опции copy используется LOAD c GENERATED OVERRIDE и всё должно работать...1. К сожалению, db2move не использует модификаторы identityoverride и generatedoverride.
Если можете, используйте identity поля как generated by default или, по меньшей мере, перед загрузкой generated always as identity поля изменяйте их на generated by default.
2.
По-моему, она этого как раз не делает и должна
У вас есть ссылка на документацию, где это написано?
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34777835
dealko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблемы с db2move у меня всегда были. Некорректно работала с полями GENERATED ALWAYS. Приходилось для восстановления генерить скрипты подручными методами.

Но недавно в DB2 9 DBA certification exam 731 prep заметил опцию COPY. Попробовал. Всё замечательно. Насчёт опции GENERATED OVERRIDE в документации не видел но видел в логах после выполнения. В файлике с таким именем LOADTABLE.20070905135456.MSG пишет так:

SQL3551W Таблица содержит по крайней мере один столбец GENERATED ALWAYS,
который утилита переопределит.

А в справочнике сообщений про это написано:
SQL3551W Таблица содержит по крайней мере один столбец GENERATED ALWAYS, который утилита переопределит. Объяснение: Задан переопределяющий модификатор типа файла (например, IDENTITYOVERRIDE или GENERATEDOVERRIDE). Для IDENTITYOVERRIDE при этом может оказаться нарушенным свойство уникальности для столбца идентификации, определенного как GENERATED ALWAYS. Для GENERATEDOVERRIDE в результате в столбце GENERATED ALWAYS может оказаться значение, не соответствующее определению столбца.

Я и подумал что используется GENERATEDOVERRIDE или IDENTITYOVERRIDE.

В принципе всё отработало как надо. Первый раз в моей практике с использованием db2 move
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34935286
Build
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2move name_db export
ошибка в синтаксисе SQL0104N Обнаружен неправильный элемент "name_db" после текста "db2move ".
что не правильно делаю?
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34935990
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
db2move - утилита, а не команда, которая выполняется интерпретатором команд db2.
Запускать ее надо из командной строки OS (под windows - из db2cmd), а не из интерпретатора команд db2.
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #34937096
Build
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Перенос БД с помощью db2move с опцией copy
    #37708998
vasilyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

У меня аналогичная ошибка, нельзя ли более подробно ответить как ее устранить.

При создании проекта в ReqPro 7.1.3 from Baseline получаю
SQL0803N One or more values in the INSERT statement, UPDATE statement, or
foreign key update caused by a DELETE statement are not valid because the
primary key, unique constraint or unique index identified by "1" constrains
table "ADMINISTRATOR.RQUSERDEFINEDFIELDVALUES" from having duplicate values for the index key.
SQLSTATE=23505

Привожу ddl для таблицы, если это нужно.
...
Рейтинг: 0 / 0
Перенос БД с помощью db2move с опцией copy
    #37709030
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilyok,

Это другая ситуация.
Тем было несоответствие друг другу объектов БД - наличие в таблице записей с определёнными значениями IDENTITY и внутреннего счётчика, новые значения для IDENTITY выдающего (новые значения совпадали с уже имеющимися).

Здесь же ошибка в логике приложения.

Впрочем, встречал, когда поля IDENTITY эмулировали через триггер + обыкновенный SEQUENCE.
Посмотрите, какие использующиеся sequences есть в системе (может чем поможет):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select SEQSCHEMA, SEQNAME, LASTASSIGNEDVAL
from SYSIBM.SYSSEQUENCES as s
where seqschema <> 'SYSIBM'
      and seqschema <> 'SYSTOOLS'
      and LASTASSIGNEDVAL IS NOT NULL
      and NOT EXISTS (select 1
                        from SYSIBM.SYSDEPENDENCIES as d 
                        where d.BSCHEMA = s.seqschema 
                           and d.BNAME = s.seqname 
                           and d.btype = 'Q' 
                           and d.dtype = 'T')
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Перенос БД с помощью db2move с опцией copy
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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