Эта инструкция предназначена для администратора. Команда migrate-postgres переносит базу из SQLite, Microsoft SQL Server, MySQL или PostgreSQL в новую базу PostgreSQL. Вместе с настройками переносятся коды, история, результаты, изображения, шрифты и пользователи.
Подготовить перенос
- Сделайте резервную копию исходной базы.
- Остановите запись из LabelRedo, других программ и производственных линий. Для нетранзакционных таблиц MySQL единый снимок изменений не гарантируется.
- Откройте исходную базу в LabelRedo 4.1 и проверьте версию в разделе «База». Перед переносом сохраните проект и подтвердите обновление структуры, если программа его предлагает.
- Создайте новую пустую базу PostgreSQL. В её схеме
publicне должно быть таблиц, представлений и последовательностей. - Проверьте права: чтение источника и создание таблиц в целевой базе.
Источник должен иметь текущую схему программы и точный набор ожидаемых столбцов. Старые и более новые схемы, пропущенные или дополнительные столбцы не принимаются. В 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 откатывает созданные таблицы и данные. После исправления причины можно повторить перенос в пустую базу. Если связь пропала в момент фиксации, сначала проверьте состояние назначения; не начинайте повтор вслепую.