2014-11-25 7 views
5

Ich baue einen Bash-Befehl in einem PHP-Skript. Der eingebaute Befehl ist wie:psql - Rollenstamm existiert nicht

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 " 

Wenn ich versuche, diesen Befehl in einer Shell zu laufen, ich diesen Fehler:

psql: FATAL: role "root" does not exist 

Warum ist das auftritt, während ich den Befehl unter Postgres Benutzer ausführen ?

Dank Cheers,

EDIT ich den Befehl

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 

ändern, aber jetzt bekomme ich einen anderen Fehler, die ich nicht den Ursprung verstehen:

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

Überprüfen Sie diesen Link: http://serverfault.com/questions/601140/whats-the-difference-between-sudo-su-postgres-and-sudo-u-postgres –

+0

Danke, ich habe meine Frage nach dem Lesen der Post bearbeitet , aber ich erhalte einen Fehler – renard

+0

Dieser Link kann Ihnen helfen: http://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist –

Antwort

0

Ich werde es endlich funktionieren lassen, indem ich den Inhalt des Befehls

01 speichere
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 einer Datei myfile.sh, dann die Datei wie folgt aufrufen:

sudo -u postgres /bin/bash myfile.sh 

Vielen Dank für Ihre Hilfe

8

Versuch:

sudo -u postgres psql

>CREATE USER root WITH SUPERUSER;

Verwandte Themen