7

I build a bash command in a PHP script. The built command is such as :

su postgres -c "for tbl in `psql -qAt -c \"select tablename from pg_tables where schemaname = 'public';\" demodoo` ;do  psql -c \"alter table $tbl owner to postgres\" demodoo ;done "

When I try to run this command in a shell, I get this error :

 psql: FATAL:  role "root" does not exist

Why is this occuring, whereas i execute the command under postgres user ?

Thanks Cheers,

EDIT I change the command to

sudo -u postgres for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" demodoo` ;do  psql -c "alter table $tbl owner to postgres" demodoo ;done

but now I get another error which I can't understand the origin :

-bash: syntax error near unexpected token `do'
renard
  • 1,368
  • 6
  • 20
  • 40

2 Answers2

10

try:

sudo -u postgres psql

> CREATE USER root WITH SUPERUSER;

0

I finnaly get it working, by saving the content of the command

for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" demodoo` ;do  psql -c "alter table $tbl owner to postgres" demodoo ;done

in a file myfile.sh, then call the file as follow :

sudo -u postgres /bin/bash myfile.sh

Thank you for your help

renard
  • 1,368
  • 6
  • 20
  • 40