psql - 角色根目录不存在

ren*_*ard 5 php postgresql bash

我在PHP脚本中构建了一个bash命令.构建的命令如下:

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 "
Run Code Online (Sandbox Code Playgroud)

当我尝试在shell中运行此命令时,我收到此错误:

 psql: FATAL:  role "root" does not exist
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,而我在postgres用户下执行命令?

谢谢干杯,

编辑 我将命令更改为

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
Run Code Online (Sandbox Code Playgroud)

但现在我得到另一个错误,我无法理解其来源:

-bash: syntax error near unexpected token `do'
Run Code Online (Sandbox Code Playgroud)

小智 8

尝试:

sudo -u postgres psql

> CREATE USER root WITH SUPERUSER;


ren*_*ard 0

通过保存命令的内容,我终于让它工作了

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
Run Code Online (Sandbox Code Playgroud)

在一个文件中myfile.sh,然后按如下方式调用该文件:

sudo -u postgres /bin/bash myfile.sh
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助