2014-11-25 24 views
5

Costruisco un comando bash in uno script PHP. Il comando integrato è tale da:psql - La radice del ruolo non esiste

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 " 

Quando provo ad eseguire questo comando in una shell, ottengo questo errore:

psql: FATAL: role "root" does not exist 

Perché questo si verificano, mentre eseguo il comando sotto utente postgres ?

Grazie Cheers,

EDIT cambio il comando per

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 

ma ora ho un altro errore, che non riesco a capire l'origine:

-bash: syntax error near unexpected token `do' 
+1

controllare questo collegamento: http://serverfault.com/questions/601140/whats-the-difference-tra between-sudo-su-postgres-and-sudo-u-postgres –

+0

Grazie, ho modificato la mia domanda dopo aver letto il post , ma ottengo un errore – renard

+0

Questo link può aiutarti: http://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist –

risposta

0

Finalmente lo faccio funzionare, salvando il contenuto del comando

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 un file myfile.sh, quindi chiamare il file come segue:

sudo -u postgres /bin/bash myfile.sh 

Grazie per il vostro aiuto

8

prova:

sudo -u postgres psql

>CREATE USER root WITH SUPERUSER;

Problemi correlati