在我的开发环境中,我有一个在容器中运行的postgres,运行db:migrate工作正常,直到最近我需要将模式更改为sql
config.active_record.schema_format = :sql
当我运行db:migrate时,我收到以下错误:
pg_dump: [archiver (db)] connection to database "mydatabase" failed: FATAL: password authentication failed for user "myuser"
在我看来,pg_dump忽略了database.yml设置。其他人对这种设置有运气吗?
答案 0 :(得分:2)
我最终做的是在你使用的ubuntu中安装postgresql-client-common和postgresql-client:
sudo apt install postgresql-client-common postgresql-client
这在本地给了我pg_dump,然后我在docker机器上打开了一个终端并将host all all 0.0.0.0/0 trust
添加到默认的pg_hba.conf文件中
打开shell使用:
docker exec -i -t <idOfContainer> /bin/bash
添加以下行:
cd /var/lib/postgresql/data
echo host all all 0.0.0.0/0 trust >> pg_hba.conf
最后一步是你需要将你的本地用户添加到postgress,pg_dump将不会使用来自datbaase.yml的凭据,所以你应该连接到psql并运行:
CREATE USER <youruser>