Проблема с базой данных при переносе проекта Trac

Я пытаюсь перенести серию проектов Trac, изначально размещенных на CloudForge, на новую виртуальную машину Bitnami (debian с установленным стеком Trac).

Документация вики Trac относительно восстановление из резервной копии для меня немного расплывчато, но предполагает, что я смогу настроить новый проект

$ sudo trac-admin PROJECT_PATH initenv

остановить работу служб

$ sudo /opt/bitnami/ctlscript.sh stop

скопируйте снимок из резервной копии в новый путь проекта и перезапустите службы

$ sudo /opt/bitnami/ctlscript.sh start

и должно быть хорошо.

Сделав это (и проработав немало проблем в пути), я дошел до точки, когда на странице браузера отображается

Ошибка трассировки

TracError: невозможно проверить обновление trac.db.api.DatabaseManager: TimeoutError: невозможно установить соединение с базой данных в течение 0 секунд. (OperationalError: невозможно открыть файл базы данных)

Когда я настраиваю новый проект, я отмечаю, что я оставил строку базы данных по умолчанию (неотредактированную), но я не знаю, какой тип базы данных использовался для исходного проекта CloudForge Trac, т.е. есть ли дополнительный шаг для восстановления базы данных.

Любая помощь будет принята с благодарностью, спасибо.

Редактировать Чтобы добавить, CloudForge использовал Trac 0.12.5, а новая виртуальная машина использует Trac 1.5.1. Не уверены, будет ли это проблемой?

Изменить. Проведите дополнительное расследование, и теперь я почти уверен, что моментальный снимок CloudForge не является файлом базы данных SQLite (или другой) - он может выглядеть как ответ типа запроса, когда он начинается и заканчивается;

НАЧАТЬ СДЕЛКУ; ... СОВЕРШИТЬ;


person SpaceCadet    schedule 17.07.2020    source источник


Ответы (2)


Спасибо всем, кто нашел время, чтобы прочитать это, но я думаю, что теперь я разобрался.

Узнав больше о SQLite, я обнаружил, что файл, отправленный CloudForge, был sqlite DUMP базы данных и его было достаточно легко перенести в новый экземпляр базы данных с помощью командной строки.

$ sqlite3 location_of/new_database.db < dump_file.db

Думаю, мне также потребовался еще один предварительный шаг по удалению содержимого исходного файла new_database.db с помощью командной строки sqlite3 (просто введите sqlite3 в терминале)

$ .open location_of/new_database.db
$ BEGIN TRANSACTION;
$ DELETE FROM each_table_in_database;
$ COMMIT;
$ .exit

Затем у меня возникла проблема с учетными данными на виртуальной машине bitnami, поэтому мне потребовалось их получить (согласно документация по битнами), используя

$ sudo cat /home/bitnami/bitnami_credentials

и добавьте этого USER_NAME как TRAC_ADMIN, используя

$ trac-admin path/to/project/ permission add USER_NAME TRAC_ADMIN

ПРИМЕЧАНИЕ, что перед и после этой операции обязательно остановите и перезапустите службы битнами, используя

$ sudo /opt/bitnami/ctlscript.sh stop
$ sudo /opt/bitnami/ctlscript.sh start
person SpaceCadet    schedule 18.07.2020

Я парень из Trac Users, вы должны понимать, что пользователь на самом деле не хранится в базе данных. У вас есть несколько таблиц со столбцами, содержащими имя пользователя, но нет таблицы для пользователя. Глядя на ваш пост, я думаю, что ваша установка использовала htdigest, а затем информация о вашем пользователе находится в этом файле учетных данных. если вы его поймаете, вы должны увидеть что-то вроде

username:realmname:pwhash

Я думаю, что это md5 как хэш, но для вашей проблемы это не имеет значения. поэтому, если вы хотите создать нового пользователя, вы должны использовать

htdigest [ -c ] passwdfile realm username

тогда вы должны использовать trac-admin, чтобы дать разрешение, и в этот момент ваш пользователь должен иметь возможность войти в систему.

Ваше здоровье

Маркус

person Markus Rosjat    schedule 18.07.2020
comment
Спасибо, Маркус, завтра займемся этим. - person SpaceCadet; 18.07.2020
comment
флаг -c в htdigest используется для создания нового файла, поэтому не используйте его с существующим файлом или вы его переопределите. - person Markus Rosjat; 18.07.2020