导轨错误:关系已经存在

我试图将我的导轨应用程序移动到docker容器进行生产,并且将生产转储加载到容器中的最后一步。

我已经完成了当前生产数据库的备份

pg_dump pdfcat_production > ~/pdfcat-20170728.dump 

我已经加载了一次之前,它的工作,这是第二次失败;

 docker-compose run -e 'RAILS_ENV=production' app rake db:drop docker-compose run -e 'RAILS_ENV=production' app rake db:create cat ~/pdfcat-20170727.dump | docker exec -i 79766cf70617 psql -Upostgres 

我得到这个错误;

 ERROR: relation "categories" already exists ERROR: role "pdfcat" does not exist ERROR: relation "categories_id_seq" already exists ERROR: role "pdfcat" does not exist ALTER SEQUENCE ERROR: relation "clients" already exists ERROR: role "pdfcat" does not exist ERROR: relation "clients_id_seq" already exists ERROR: role "pdfcat" does not exist 

完成所有这些错误后,我无法加载networking应用程序。

第二次加载会导致错误,因为数据已经加载到容器中,因此不会被重新创build。 这次你不需要加载数据。

至于现在的情况,你可以删除容器并重新开始,这次数据加载不会给出任何错误。 若要移除容器,可以使用docker rm <contianer_id> ,如果在停止或移除容器时出现问题,则系统重启将失败并停止所有容器。 重新启动docker服务也可能是一个选项。

如果要准备一个可以首次加载数据的映像,可以在dockerfile中包含这个数据加载过程。