Доброго времени суток.
Есть старый сервер 11 версии на Windows и SQlite3 и новый на Debian с 13 версией и PostgreSQL.
Как перенести базу с 11 версии SQLite3 на 13 версию PostgreSQL?
Отправлено 08 Февраль 2023 - 16:15
Доброго времени суток.
Есть старый сервер 11 версии на Windows и SQlite3 и новый на Debian с 13 версией и PostgreSQL.
Как перенести базу с 11 версии SQLite3 на 13 версию PostgreSQL?
Отправлено 08 Февраль 2023 - 17:07
Переключить новый на SQLite3, принести туда БД со старого (можно прямо database.sqlite при остановленном сервере), обновить её – /etc/init.d/drwcsd modexecdb database-upgrade && echo OK || echo FAILED – сделать экспорт – /etc/init.d/drwcsd modexecdb database-export /path/to/export.db && echo OK || echo FAILED – перенастроить на постгрес, остановить сервер, импортировать – /etc/init.d/drwcsd modexecdb database-import /path/to/export.db && echo OK || echo FAILED – и запустить сервер.
Если где-то фейл – остановиться и разобраться.
Отправлено 08 Февраль 2023 - 18:27
Отправлено 08 Февраль 2023 - 18:36
Мне тут напоминают, что я один момент забыл.
Если БД в потсгресе не была проинициализирована (т.е. нашей структуры там нет), перед импортом надо инициализировать: /etc/init.d/drwcsd modexecdb database-init && echo OK || echo FAILED
Отправлено 09 Февраль 2023 - 09:31
Извиняюсь, но когда я скопировал базу SQLite с сервера на Windows на сервер на Linux и пытаюсь обновить ее, то у меня код выхода FAILED.
Отправлено 09 Февраль 2023 - 09:40
Тогда интерес представляет /var/opt/drwcs/log/drwcsd.log.
Отправлено 09 Февраль 2023 - 10:23
Я тут хрустальный шар увидел в углу, поинтересовался, он говорит, что скорей всего после копирования права на database.sqlite не были поправлены.
как минимум:
chown drwcs:drwcs database.sqlite
Отправлено 09 Февраль 2023 - 10:38
Да ну, из-под рута же запускалось.
Отправлено 09 Февраль 2023 - 11:40
Я тут хрустальный шар увидел в углу, поинтересовался, он говорит, что скорей всего после копирования права на database.sqlite не были поправлены.
как минимум:
chown drwcs:drwcs database.sqliteДа, поправил.
Отправлено 09 Февраль 2023 - 11:45
В логе ошибка:
Интересное выше должно быть.
Отправлено 09 Февраль 2023 - 11:47
В логе ошибка:Интересное выше должно быть.
[PgSQL/1] Unable to create instance because of20230209.123613.85 ERR [01878 01878] main [PgSQL/1] \ База данных "drwcs" не существует (S:3D000 ВАЖНО)20230209.123613.85 ERR [01878 01878] main [PgSQL/1] exceptions_namespace::database_exception: База данных "drwcs" не существует (S:3D000 ВАЖНО)20230209.123613.85 ERR [01878 01878] main [DBPool] Unable to create [PgSQL/1] connection because of База данных "drwcs" не существует (S:3D000 ВАЖНО)Базу сначала надо создать ?
Сообщение было изменено Tuxzer92: 09 Февраль 2023 - 11:47
Отправлено 09 Февраль 2023 - 12:00
Так все таки как правильнее создать БД PostgreSQL?
Так:
Создайте базу данных PostgreSQL одним из следующих способов:
a)При помощи графического интерфейса pgAdmin.
При помощи SQL-команды CREATE DATABASE.
или так? /etc/init.d/drwcsd modexecdb database-init
Отправлено 09 Февраль 2023 - 12:15
Сначала первое, потом второе. Создание БД (а ещё создание юзера и наделение его полномочиями) и создание физической структуры БД с наполнением дефолтными данными – процессы раздельные.
Сообщение было изменено Afalin: 09 Февраль 2023 - 12:16
Отправлено 09 Февраль 2023 - 12:28
Сначала первое, потом второе. Создание БД (а ещё создание юзера и наделение его полномочиями) и создание физической структуры БД с наполнением дефолтными данными – процессы раздельные.
Спасибо. Все получилось)
Отправлено 09 Февраль 2023 - 13:05
А нет. Поторопился. Ошибка при импорте: /etc/init.d/drwcsd modexecdb database-import /path/to/export.db && echo OK || echo FAILED
Сообщение было изменено Tuxzer92: 09 Февраль 2023 - 13:08
Отправлено 09 Февраль 2023 - 14:10
[Srv/DBMgr] table "station_hips_event" field #6 record #328 numeric value is over limit 2147483647 20230209.133435.44 wrn [02351 02351] main [Srv/DBMgr] table "station_hips_event" field #6 record #328 value "3178711513" changed to "2147483647" 20230209.133435.60 wrn [02351 02351] main [Srv/DBMgr] table "station_hips_event" field #6 record #1414 numeric value is over limit 2147483647 20230209.133435.60 wrn [02351 02351] main [Srv/DBMgr] table "station_hips_event" field #6 record #1414 value "3862481585" changed to "2147483647" 20230209.133435.67 wrn [02351 02351] main [Srv/DBMgr] Table "station_hips_event" has erronous records 20230209.135320.34 ERR [02351 02351] main [PgSQL/1] Повторяющееся значение ключа нарушает ограничение уникальности "env_strings_0001". Ключ "(str)=(Microsoft)" уже существует. (S:23505 ОШИБКА, schema "public", table "env_strings", constraint "env_strings_0001"), 00.395, INSERT INTO env_strings(id,str) VALUES(?,?) <any> [5:"17738", 11:"Microsoft\x00H"] 20230209.135320.34 FTL [02351 02351] main [Srv/DBMgr] Unable to execute statement "INSERT INTO env_strings(id,str) VALUES(?,?)" because of [string "database/utils/utils.ds"]:169: Database "Повторяющееся значение ключа нарушает ограничение уникальности "env_strings_0001". Ключ "(str)=(Microsoft)" уже существует. (S:23505 ОШИБКА, schema "public", table "env_strings", constraint "env_strings_0001")" error occured executing "INSERT INTO env_strings(id,str) VALUES(?,?)" 20230209.135320.34 ERR [02351 02351] main [Lua/DB] Unable to execute "SELECT * FROM env_strings" because of row read callback returned false 20230209.135320.34 ERR [02351 02351] main [Srv/DBMgr] Execution error "[string \"database/import/utils.ds\"]:168: row read callback returned false" occured 20230209.135320.35 ERR [02351 02351] main [Srv/DBMgr] Execution error "[string \"database/import/utils.ds\"]:197: [string \"database/import/utils.ds\"]:168: row read callback returned false" occured
Тут видимо ошибка? Что-то надо поправить в самой базе?
Отправлено 09 Февраль 2023 - 16:02
"Ключ "(str)=(Microsoft)" уже существует" Видимо в этом проблема. Как решить?
Сообщение было изменено Tuxzer92: 09 Февраль 2023 - 16:02
Отправлено 09 Февраль 2023 - 17:06
Ага, разные СУБД по-разному считают текст. Значения, равные для одной, будут разными для другой. И это пока что побороть, емнип, не удалось. Проще всего вот так:
/opt/drwcs/bin/drwidbsh3 /var/opt/drwcs/database.sqlite
> DELETE FROM env_strings;
> DELETE FROM station_env_hw;
> DELETE FROM station_env_sw;
> DELETE FROM station_env_kb;
> DELETE FROM station_env_hash;
> .quit
И повторить, начиная с database-export.
Потом станции новое пришлют.
Но такой подвох может быть не один.
Отправлено 10 Февраль 2023 - 10:22
Фух. БД успешно импортировалась в PostgreSQL. Надеюсь на этом все)
0 пользователей, 0 гостей, 0 скрытых