Repository navigation
Initialization script when PGData is not empty #1229
Description
Activity
Hi @tianon! Thanks for your response.
I managed to run an init script on my db but it fails withrole "postgres" does not exist(it was probably deleted).
I don't know what roles the db has and I want to use the init script to verify thepostgresrole exists (and if not to create one).You can run
docker exec -u postgres -it postgres psql psql (16.2 (Debian 16.2-1.pgdg120+2)) Type "help" for help. postgres=# \du List of roles Role name | Attributes -----------+------------------------------------------------------------ postgres | Superuser, Create role, Create DB, Replication, Bypass RLSHi @LaurentGoderre unfortunately your solution would not work in my case because there is no role
postgresso I'm unable to execute any command with -u postgres, that's why I would like to init the db with apostgresrole creation@tomera-cyera I believe
postgresin this case refers to the OS user which ispostgresnot the db role.No, I refer to the
postgresdb role in case I initialize the container with data-dir that does not have the role postgres I want to make sure thepostgresrole will be created if not exist
@LaurentGoderreOOh you mean at initialization?
@LaurentGoderre, yes. you see I need to initialize the db to have a postgres role even when the datadir already exists (a.k.a the db already initialized)
Reacted by yuvall-cyera@tianon @LaurentGoderre what do you think?
@yuvall-cyera can you please be more specific about what it is you're looking for feedback on? IMO the thread above is pretty clear (if you need one-time initialization, the image has that as-is, and if you need more than that, see the references in #1229 (comment))
I know that when the PGData directory is not empty the container skips the initialization and therefore won't run the initialization script in
/docker-entrypoint-initdb.dI would like to use a way to give the container scripts that will run on startup no matter what (for example to create a role
postgresif one does not exist already)