Gerrit 安装过程中遇到的问题汇总。

本文解决MySQL中timestamp字段默认值问题及Ubuntu系统SSH连接旧版主机时遇到的密钥交换方法不匹配问题,提供了详细的步骤说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. MySQL Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper

        错误信息:

  Exception in thread "main" com.google.gwtorm.server.OrmException: Cannot apply SQL
CREATE TABLE account_group_by_id_aud (
added_by INT DEFAULT 0 NOT NULL,
removed_by INT,
removed_on TIMESTAMP NULL DEFAULT NULL,
group_id INT DEFAULT 0 NOT NULL,
include_uuid VARCHAR(255) BINARY DEFAULT '' NOT NULL,
added_on TIMESTAMP NOT NULL
,PRIMARY KEY(group_id,include_uuid,added_on)
)
    at com.google.gwtorm.jdbc.JdbcExecutor.execute(JdbcExecutor.java:44)
    at com.google.gwtorm.jdbc.JdbcSchema.createRelations(JdbcSchema.java:119)
    at com.google.gwtorm.jdbc.JdbcSchema.updateSchema(JdbcSchema.java:89)
    at com.google.gerrit.server.schema.SchemaCreator.create(SchemaCreator.java:77)
    at com.google.gerrit.server.schema.SchemaUpdater.update(SchemaUpdater.java:99)
    at com.google.gerrit.pgm.init.BaseInit$SiteRun.upgradeSchema(BaseInit.java:339)
    at com.google.gerrit.pgm.init.BaseInit.run(BaseInit.java:120)
    at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:166)
    at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:93)
    at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:50)
    at Main.main(Main.java:25)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Invalid default value for 'added_on'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2663)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:888)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:730)
    at com.google.gwtorm.jdbc.JdbcExecutor.execute(JdbcExecutor.java:42)
    ... 15 more

  解决方法:

  使用MySQL root用户登录 设置
set global explicit_defaults_for_timestamp=1; 重新安装gerrit即可 新版本的mysql timestamp默认值的问题需要手动配置一下


2. ubuntu 16.04 ssh 7.0 issue

error message:
Unable to negotiate with legacyhost: no matching key exchange method found.
Their offer: diffie-hellman-group1-sha1

solution:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@legacyhost

or in the ~/.ssh/config file:

Host somehost.example.org
	KexAlgorithms +diffie-hellman-group1-sha1

ssh legacy document:

http://www.openssh.com/legacy.html

gerrit 配置文档

https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#index








      


<think>好的,用户需要查找关于Gerrit安装指南、教程或步骤。首先,我需要回忆一下Gerrit的基本安装流程,并结合提供的引用内容来组织回答。 根据引用[1],Gerrit的官方网站是重要的资源,应该首先推荐用户访问官网获取最新文档。接着,引用[2]提到了Gitweb的集成,虽然这不是安装的核心步骤,但可能涉及后续配置。引用[3]中的Nginx配置示例对设置反向代理很有帮助,安装过程中可能需要配置Web服务器。 接下来,我需要整理安装步骤。通常,Gerrit安装包括准备环境(Java、Git)、下载Gerrit WAR文件、初始化安装、配置数据库、设置反向代理(如Nginx),以及基本配置和验证。需要确保每个步骤都清晰,并正确引用相关材料。例如,在数据库配置部分,可能需要提到引用[3]中的反向代理设置,而初始化步骤可以参考引用[1]的官方网站文档。 同时,用户可能遇到的问题包括Java版本不兼容、权限设置错误或反向代理配置不当,应该在注意事项中提醒这些点。最后,生成的相关问题需要围绕安装后的配置、优化和常见问题解决,帮助用户进一步学习。</think>### Gerrit安装指南 Gerrit是一个基于Git的代码审查工具,以下是安装的核心步骤及注意事项: --- #### **1. 环境准备** - **Java环境**:确保安装Java 11或更高版本(推荐OpenJDK)[^1] - **Git版本**:安装Git 2.x及以上版本 - **数据库**:支持PostgreSQL、MySQL或内置H2数据库(生产环境建议使用外部数据库) --- #### **2. 下载Gerrit** 从官网下载最新WAR文件: ```bash wget https://gerrit-releases.storage.googleapis.com/gerrit-3.8.1.war ``` --- #### **3. 初始化安装** 执行交互式初始化命令: ```bash java -jar gerrit-3.8.1.war init --batch -d /path/to/gerrit_site ``` 参数说明: - `--batch`:跳过交互式配置(适合自动化部署) - `-d`:指定安装目录 --- #### **4. 数据库配置** 若选择外部数据库(以PostgreSQL为例): 1. 创建数据库和用户 2. 修改`gerrit_site/etc/gerrit.config`: ```config [database] type = postgresql hostname = localhost database = gerrit username = gerrit_user ``` --- #### **5. 反向代理配置(以Nginx为例)** 参考引用[3]的配置示例,创建`/etc/nginx/conf.d/gerrit.conf`: ```nginx server { listen 80; server_name gerrit.example.com; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } ``` 重启Nginx生效。 --- #### **6. 基础配置** - **认证方式**:在`gerrit.config`中设置LDAP、OAuth或OpenID - **邮件通知**:配置SMTP服务器以发送审核通知 - **插件管理**:通过`gerrit plugin install`命令安装必要插件 --- #### **7. 启动与验证** ```bash /path/to/gerrit_site/bin/gerrit.sh start ``` 访问`http://gerrit.example.com`,确认界面正常加载。 --- #### **注意事项** 1. 需开放8081(Gerrit服务端口)和29418(Git协议端口) 2. 生产环境建议禁用H2数据库,改用MySQL/PostgreSQL 3. 定期备份`gerrit_site`目录下的配置和数据 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值