Эта инструкция предназначена для администратора. Команда migrate-postgres переносит базу из SQLite, Microsoft SQL Server, MySQL или PostgreSQL в новую базу PostgreSQL. Вместе с настройками переносятся коды, история, результаты, изображения, шрифты и пользователи.

Подготовить перенос

  1. Сделайте резервную копию исходной базы.
  2. Остановите запись из LabelRedo, других программ и производственных линий. Для нетранзакционных таблиц MySQL единый снимок изменений не гарантируется.
  3. Откройте исходную базу в LabelRedo 4.1 и проверьте версию в разделе «База». Перед переносом сохраните проект и подтвердите обновление структуры, если программа его предлагает.
  4. Создайте новую пустую базу PostgreSQL. В её схеме public не должно быть таблиц, представлений и последовательностей.
  5. Проверьте права: чтение источника и создание таблиц в целевой базе.

Источник должен иметь текущую схему программы и точный набор ожидаемых столбцов. Старые и более новые схемы, пропущенные или дополнительные столбцы не принимаются. В MSSQL читается dbo, в PostgreSQL — public, в MySQL — база из строки подключения.

Проверьте адреса источника и назначения. Перенос не переключает приложения на новую базу автоматически. Пользовательские таблицы вне набора LabelRedo, триггеры, роли, права, расширения и задания сервера не копируются.

Запустить команду

Нужен отдельный комплект CLI той же сборки LabelRedo 4.1. Если его нет в поставке, запросите комплект у поставщика программы. Пример рассчитан на каталог с lable_redo_v4.Cli.dll и установленный .NET 8.

Задайте строки подключения через переменные окружения процесса CLI. В примере LR4_SOURCE и LR4_TARGET — условные имена таких переменных. Для SQLite строка источника имеет вид Data Source=/path/to/project.slf; путь замените своим. Строку PostgreSQL подготовьте с адресом, базой и учётными данными назначения.

В каталоге CLI выполните:

dotnet lable_redo_v4.Cli.dll migrate-postgres SQLITE LR4_SOURCE LR4_TARGET

Вместо SQLITE для другой исходной базы используйте MSSQL, MYSQL или PGSQL. Команда принимает имена переменных, а не пароли и строки подключения в аргументах.

Проверить результат

Успешный перенос завершается кодом 0, сообщением Migration committed и количеством строк по таблицам. Код 1 означает ошибку аргументов или отсутствие переменных, 2 — ошибку переноса, 130 — обработанную отмену Ctrl+C.

Мигратор не изменяет исходную базу; SQLite открывается только для чтения. Идентификаторы, связи, UUID, NULL, двоичные данные и время сохраняются без пересчёта часового пояса. Счётчики PostgreSQL продолжаются после наибольшего ID.

Некорректные UUID, дробные или слишком большие значения целочисленных полей, а также слишком длинные строки приводят к отказу. Данные не обрезаются автоматически.

Проверьте товары, макеты, изображения, задания и историю в новой базе. Только после проверки переключите подключение LabelRedo и внешних линий.

Если ошибка произошла до фиксации переноса, PostgreSQL откатывает созданные таблицы и данные. После исправления причины можно повторить перенос в пустую базу. Если связь пропала в момент фиксации, сначала проверьте состояние назначения; не начинайте повтор вслепую.