【问题标题】:SQL Exception when starting TeamCity启动 TeamCity 时出现 SQL 异常
【发布时间】:2023-07-02 00:15:01
【问题描述】:

我在启动 TeamCity 时遇到以下错误:

INFO - jetbrains.buildServer.STARTUP - 使用数据库属性文件中的数据库连接 URL。网址为:jdbc:hsqldb:file:$TEAMCITY_SYSTEM_PATH/buildserver

INFO - jetbrains.buildServer.STARTUP - 使用内部 (HSQL) 数据库

INFO - jetbrains.buildServer.STARTUP - 当前阶段:连接到数据库

错误 - jetbrains.buildServer.STARTUP - 意外异常 SQLException/HsqlException:执行时出现 SQL 错误:从数据源建立连接 SQL 异常:脚本文件行错误:C:\ProgramData\JetBrains\TeamCity\system\buildserver 278

INFO - jetbrains.buildServer.STARTUP - 当前阶段:TeamCity 服务器启动错误

第 278 行如下所示:

设置表 PUBLIC.PROBLEM 索引 '13402 13202 0 0 158'

你能帮帮我吗?可能是什么问题?

【问题讨论】:

    标签: teamcity


    【解决方案1】:

    得到这样的指令: https://confluence.jetbrains.com/display/TCD10/Common+Problems#CommonProblems-Database-relatedissues

    更重要的是,这里有一个相关的问题: https://teamcity-support.jetbrains.com/hc/en-us/community/posts/206158469-SQL-error-when-doing-Taking-a-connection-from-the-data-source

    看起来数据库已损坏。如果您有备份,则需要从中恢复。如果没有,您只能删除数据库并在没有数据的情况下启动,但会保留配置文件。为此,您需要停止服务器并将匹配通配符 buildserver.* 的文件从 /system/ 目录移动到其他位置并再次启动服务器。

    【讨论】:

    • 谢谢,这有帮助。删除数据库意味着重新创建用户帐户,但幸运的是配置保持不变(这是 99.9% 的工作)。远程构建代理需要一键重新授权(无需设置)。
    【解决方案2】:

    除了 Jonatan 的回答之外,我通过打开位于 <Teamcity Home>/logs/teamcity-server.log 的日志并搜索“数据目录”来确定我的数据目录。就我而言,它是C:\ProgramData\JetBrains\TeamCity\system

    在我移动了所有 buildserver.* 文件(在我的例子中,它是 buildserver.databuildserver.logbuildserver.properties)之后,我在浏览器中打开了 Teamcity UI,并被提示输入超级用户令牌。我通过检查<Teamcity Home>/logs/teamcity-server.log 的日志结尾来确定令牌。将令牌输入 Teamcity UI 后,确认创建新数据库。

    【讨论】: