端口选择与数据库配置——H2、PostgreSQL、MySQL、KingbaseES
端口行为因部署方式而异
| 部署方式 | 默认端口 | 冲突处理 |
|---|---|---|
| 桌面端 | 动态挑选 | 永远不会冲突,Electron 启动时找一个空闲端口 |
| Docker Compose | 18080 | 改 docker-compose.yml 的端口映射 |
| 源码 mvn spring-boot:run | 18088 | 加参数 --server.port=19090 |
| 预编译 JAR | 18088 | 加参数 --server.port=19090 |
桌面端为什么不用记端口?Electron 内嵌浏览器直接访问后端,端口由后端自动选择,前端不需要知道。
四种数据库支持
MateClaw 是 Spring Boot 项目,通过 Spring profile 切换数据库。Flyway 负责 schema 迁移,按数据库方言管理版本。
| 数据库 | 使用场景 | 备注 |
|---|---|---|
| H2 文件数据库 | 开发、桌面端、测试 | 零配置,文件在 data/mateclaw.mv.db |
| PostgreSQL 16 | Docker 栈、生产首选 | 默认公开 Docker 栈的数据库 |
| MySQL 8 | 已有 MySQL 环境的团队 | profile 继续支持 |
| KingbaseES | 国产数据库环境 | 驱动按需启用 |
H2 常见问题
数据库锁错误(桌面端/开发模式下偶发):
rm -f data/mateclaw.mv.db.lock
或者直接清空 data/ 目录重新开始——会丢失所有本地数据,确认不需要再做。
数据库迁移
Flyway 自动按版本跑迁移脚本。升级 MateClaw 时,新的 Flyway migration 会在启动时自动执行。升级前建议先做数据库备份。