mysql - MySql登录失败导致Trac热拷贝备份失败

标签 mysql trac

我正在尝试将 trac 1.0 实例从一台计算机移动到另一台计算机。我使用了此处描述的 Trac 备份和恢复过程,该过程使用 hotcopy 命令。

http://trac.edgewall.org/wiki/TracBackup

然后,我使用 trac 的新用户创建了一个新的 MySql 数据库,分配了适当的权限,然后运行 ​​tracadmin initenv 命令来创建新的 trac 环境。我使用 tracd 部署了它,它似乎工作正常。

当我尝试用热复制备份的内容替换这个新环境时,在尝试连接到服务器时出现以下错误......

我错过了一些步骤吗?我更改了 MySql 权限,以确保它们与我在数据库字符串中传递给 trac 的密码和用户名匹配。当我复制新环境并且 trac 使用错误的密码连接到 MySql 时,这是否可能被覆盖?

非常感谢任何帮助!

Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/trac/web/api.py", line 502, in send_error
    data, 'text/html')
  File "build/bdist.linux-x86_64/egg/trac/web/chrome.py", line 955, in render_template
    message = req.session.pop('chrome.%s.%d' % (type_, i))
  File "build/bdist.linux-x86_64/egg/trac/web/api.py", line 304, in __getattr__
    value = self.callbacks[name](self)
  File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 268, in _get_session
    return Session(self.env, req)
  File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 206, in __init__
    self.get_session(sid)
  File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 229, in get_session
    super(Session, self).get_session(sid, authenticated)
  File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 76, in get_session
    with self.env.db_query as db:
  File "build/bdist.linux-x86_64/egg/trac/db/api.py", line 165, in __enter__
    db = DatabaseManager(self.env).get_connection(readonly=True)
  File "build/bdist.linux-x86_64/egg/trac/db/api.py", line 250, in get_connection
    db = self._cnx_pool.get_cnx(self.timeout or None)
  File "build/bdist.linux-x86_64/egg/trac/db/pool.py", line 213, in get_cnx
    return _backend.get_cnx(self._connector, self._kwargs, timeout)
  File "build/bdist.linux-x86_64/egg/trac/db/pool.py", line 134, in get_cnx
    raise TimeoutError(errmsg)
TimeoutError: Unable to get database connection within 0 seconds. (OperationalError: (1045, "Access denied for user 'trac_user'@'localhost' (using password: YES)"))

最佳答案

我永远无法让那些“热复制”指令发挥作用。它们看起来像是用 sqlite 编写的,而不是 MySQL。当我将 Trac 实例迁移到新服务器时,我必须执行以下操作才能使数据库正常工作:

# On old server
$ mysqldump -u admin -padmin_password trac >backup.sql

# On new server
$ mysql -u admin -padmin_password
mysql> CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
mysql> GRANT ALL ON trac.* TO trac_account@localhost IDENTIFIED BY 'topsecret';
mysql> exit
$ mysql -u admin -padmin_password trac <backup.sql

将“trac_account”和“topsecret”替换为 Trac 将使用的用户名和密码。之后,我就能够启动并运行 Trac。本质上,忘记 Trac 的参与,并将整个事情视为正常的数据库备份和恢复操作。就 Trac 的其余部分而言,我只是使用导入的数据库在新服务器上创建了一个新的 Trac 实例,然后根据需要从旧服务器复制文件(配置文件、附件、自定义模板等)。

注意:如果相关的话,我的旧安装和新安装对 Trac 使用相同的 MySQL 数据库凭据。如果您在迁移过程中要更改凭据,YMMV。

关于mysql - MySql登录失败导致Trac热拷贝备份失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772913/

相关文章:

mysql - 如果不存在插入且没有 id,如何更新记录数组?

PHP 匹配来自 2 个不同 MySQL 数据库的表

python - 如何更新python egg中的文件

python - 如何自动更新 trac wiki 页面?

php - 如何在 mySQL 数据库中将 "int"更改为 "varchar"而 php 代码没有问题?

php - 快速插入会导致数据丢失

php - json 返回损坏的数据

trac - 如何更改 Trac wiki 中的默认登录页面?

project-management - Scrum 项目管理与 Trac 集成

trac - 通过 trac-admin initenv 创建一个新的 Trac 项目