【问题标题】:Database issue when migrating a Trac project迁移 Trac 项目时的数据库问题
【发布时间】:2020-11-07 07:23:42
【问题描述】:

我正在尝试将最初托管在 CloudForge 上的一系列 Trac 项目迁移到新的 Bitnami 虚拟机(安装了 Trac 堆栈的 debian)。

Trac wiki 上关于 restoring from a backup 的文档对我来说有点模糊,但建议我应该能够设置一个新项目

$ sudo trac-admin PROJECT_PATH initenv

停止服务运行

$ sudo /opt/bitnami/ctlscript.sh stop

将备份中的快照复制到新的项目路径中并重新启动服务

$ sudo /opt/bitnami/ctlscript.sh start

应该很高兴。

完成此操作(并在途中解决了很多问题)我现在已经到了显示浏览器页面的地步

跟踪错误

TracError: Unable to check for upgrade of trac.db.api.DatabaseManager: TimeoutError: Unable to get database connection within 0 seconds. (OperationalError: 无法打开数据库文件)

当我设置新项目时,我注意到我留下了默认(未编辑的)数据库字符串,但我不知道原始 CloudForge Trac 项目使用的是什么数据库类型,即是否有额外的步骤来恢复数据库。

任何帮助将不胜感激,谢谢。

编辑 补充一下,CloudForge 使用的是 Trac 0.12.5,新的 VM 使用的是 Trac 1.5.1。不确定这是否会成为问题?

编辑 更多调查,我现在很确定 CloudForge 快照不是 SQLite(或其他)数据库文件 - 它看起来可能是一个查询类型的响应,因为它开始和结束;

开始交易; ... 提交;

【问题讨论】:

    标签: database sqlite bitnami migrate trac


    【解决方案1】:

    感谢任何花时间阅读本文的人,但我想我现在已经整理好了。

    在了解更多关于 SQLite 后,我发现 CloudForge 发送的文件是数据库的 sqlite DUMP,并且很容易使用命令行迁移到新的数据库实例

    $ sqlite3 location_of/new_database.db < dump_file.db
    

    我想我还需要另一个先前的步骤,使用 sqlite3 命令行删除原始 new_database.db 的内容(只需在终端中输入 sqlite3

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

    然后我在 bitnami VM 上遇到了一些凭据问题,因此需要使用

    检索这些(根据 the bitnami documentation
    $ sudo cat /home/bitnami/bitnami_credentials
    

    并使用

    将此 USER_NAME 添加为 TRAC_ADMIN
    $ trac-admin path/to/project/ permission add USER_NAME TRAC_ADMIN
    

    注意在此操作之前和之后,请务必使用

    停止并重新启动 bitnami 服务
    $ sudo /opt/bitnami/ctlscript.sh stop
    $ sudo /opt/bitnami/ctlscript.sh start
    

    【讨论】:

      【解决方案2】:

      我是来自 Trac Users 的人,您需要了解用户并没有真正存储在数据库中。您有一些表,其中包含包含用户名的列,但没有用户表。看着你的帖子,我认为你的设置使用了 htdigest,然后你的用户信息在那个凭证文件中。如果你 cat 它,你应该会看到类似的东西

      username:realmname:pwhash
      

      我认为这是 md5 作为哈希,但这对您的概率并不重要。所以如果你想创建一个新用户,你必须使用

      htdigest [ -c ] passwdfile realm username
      

      那么您应该使用 trac-admin 授予权限,此时您的用户应该能够登录。

      干杯

      马库斯

      【讨论】:

      • 谢谢 Markus,明天会调查一下
      • htdigest 中的 -c 标志用于创建新文件,因此请勿将其与现有文件一起使用,否则会覆盖它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多