## The problem

A full EdgeDB dump would not restore with `SchemaError: role 'myuser' is already present in the schema`, even with --allow-non-empty --all. The root cause is that unlike Postgres, EdgeDB refuses to restore schema objects that already exist in the target, and the user's Docker setup booted the instance with a custom EDGEDB_USER, so the custom role was already baked into the fresh data volume. The working recipe from the thread is to dump from the original volume, then restore into a brand new empty data volume bootstrapped with the default `edgedb` role (remove EDGEDB_USER from the compose file), without running any migrations before the restore. The reporter confirmed the restore completed cleanly this way and published the full scripts as a gist. The EdgeDB team also said they would make dumps tolerant of overlapping roles in beta 2.

## What fixed it

That error happens because the target instance already contains the role you are trying to restore, and EdgeDB never overwrites existing schema objects during restore. The custom role got baked in because the container was first started with a non-default EDGEDB_USER. Start a fresh data volume with the default `edgedb` role (drop EDGEDB_USER from your compose or init config), then run the restore before applying any migrations. The reporter verified this restores the full backup successfully. Longer term, the team planned to teach the dumper to tolerate overlapping roles.