You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Docker-compose出现Unknown database数据库连接错误如何解决?

解决Spring Boot CQRS查询模块Docker连接数据库报错问题

执行docker-compose --build启动基于CQRS的Spring Boot查询模块时,出现如下错误:

java.sql.SQLSyntaxErrorException: Unknown database 'bankAccount'

问题根源是MySQL容器启动时未自动创建bankAccount数据库,导致Spring Boot应用连接时找不到目标库。以下是具体解决方案:

方案一:配置MySQL自动创建数据库(推荐)

修改docker-compose.yml中database服务的环境变量,添加MYSQL_DATABASE指定要创建的数据库名称,MySQL容器启动时会自动初始化该库。修改后的配置片段:

database:
  container_name: mysql-database
  image: 'mysql:latest'
  ports:
    - "3306:3306"
  restart: always
  environment:
    MYSQL_PASSWORD: root
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: bankAccount # 新增这行,指定自动创建的数据库名
  volumes:
    - db-data:/var/lib/mysql
  networks:
    - bankQuery
  healthcheck:
    test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
    timeout: 20s
    retries: 10

方案二:添加应用连接重试机制

即使配置了depends_on,也只能保证MySQL容器启动,无法确保数据库服务完全就绪。可以为Spring Boot应用添加连接重试,避免因数据库未就绪导致的启动失败:
在app服务的环境变量中添加Hikari连接池配置:

app:
  # 其他配置不变
  environment:
    # 原有环境变量保留
    - spring.datasource.hikari.connection-timeout=20000
    - spring.datasource.hikari.initialization-fail-timeout=0 # 无限重试直到连接成功
  restart: on-failure # 启动失败时自动重启

方案三:手动创建数据库(临时应急)

如果不想修改配置,可以手动进入MySQL容器创建数据库:

  1. 单独启动MySQL容器:docker-compose up -d database
  2. 进入容器终端:docker exec -it mysql-database bash
  3. 登录MySQL:mysql -uroot -proot
  4. 创建目标数据库:CREATE DATABASE bankAccount;
  5. 启动应用服务:docker-compose up app

内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:07:49