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

Docker部署Rails项目修改数据库名报Unknown database错误如何解决

报错原因

MySQL官方Docker镜像的初始化逻辑仅会在容器首次启动、对应数据卷为空时,读取MYSQL_DATABASE环境变量自动创建指定名称的数据库。你第一次启动项目时已经生成了存储app数据库的持久化数据卷,后续修改MYSQL_DATABASE配置后重启容器,MySQL不会重复执行初始化流程,因此新的hello数据库并未实际创建,Rails连接时就会抛出Unknown database 'hello'的错误。

修复操作步骤
  • 方案一(推荐,新手友好):清除旧的数据库数据卷,重新初始化

    1. 执行命令停止并删除原有容器及关联数据卷:
    docker-compose down -v
    

    注意:-v参数会删除数据库服务关联的持久化卷,原有库内的所有数据会被清空,如果需要保留数据请使用方案二。
    2. 确认docker-compose.yml已完成两处修改:

    • db服务环境变量中MYSQL_DATABASE: hello
    • app服务环境变量中DB_NAME: hello
    1. 重新启动服务即可:
    docker-compose up --build
    

    本次启动时MySQL会重新执行初始化逻辑,自动创建hello数据库,项目即可正常运行。

  • 方案二(保留原有数据):手动创建新数据库
    如果不想清空原有数据库数据,可以直接进入MySQL容器手动创建hello库,执行命令:

    docker-compose exec db mysql -u root -ppassword -e "CREATE DATABASE IF NOT EXISTS hello;"
    

    执行完成后重启Rails服务即可正常连接。

你当前的Dockerfile、database.yml配置无需额外修改,database.yml已配置读取环境变量的DB_NAME参数,不需要手动调整。

内容的提问来源于stack exchange,提问作者mrateb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:00