【问题标题】:docker-compose rails rake db:reset fails, "cannot drop the currently open database"docker-compose rails rake db:reset 失败,“无法删除当前打开的数据库”
【发布时间】:2016-08-25 02:46:20
【问题描述】:

在使用 docker compose 时,我似乎无法重置我的数据库。我试过杀死服务器,只杀死数据库,然后重新启动机器。

有人知道清除开发数据库的最佳方法吗?

这是我尝试过的:

docker-compose run web rake db:reset

我收到此错误:

PG::ObjectInUse: 错误: 无法删除当前打开的数据库 :如果存在“postgres”,则删除数据库 无法删除数据库“postgres” 耙子中止了!

我使用的设置与 docker-compose 快速入门完全一致:https://docs.docker.com/compose/rails/

我有一个 rails 容器和一个 postgres 容器

【问题讨论】:

    标签: ruby-on-rails postgresql docker docker-compose


    【解决方案1】:

    您使用了错误的数据库。

    数据库postgres 通常不用于存储用户数据,而是用于管理目的。例如,如果要删除数据库,则必须连接到 PostgreSQL 数据库集群中的不同数据库才能发出 SQL 语句DROP DATABASE。通常,数据库postgres 用于此目的,我毫不怀疑 Docker 在尝试删除数据库时正是这样做的。

    如果您真的想删除数据库postgres,则必须连接到集群中的其他数据库。然而,正确的解决方案是将数据保存在不同的数据库中。那么问题应该会自行消失。

    【讨论】:

    • 谢谢。这正是问题所在——我需要做的就是更改 config/database.yml 中的数据库名称,使其不是 postgres。非常感谢您的帮助!
    • 同样,我正在学习相同的教程并且遇到了同样的问题。谢谢。
    • 我刚刚添加了一个 PR 来更改文档。希望它将被合并并为其他 postgres 新手省去麻烦。
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 2023-03-30
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多