psql - 角色根目录不存在

时间:2014-11-25 10:43:37

标签: php bash postgresql

我在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 "

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

 psql: FATAL:  role "root" does not exist

为什么会发生这种情况,而我在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

但是现在我得到了另一个我无法理解原因的错误:

-bash: syntax error near unexpected token `do'

2 个答案:

答案 0 :(得分:8)

尝试:

sudo -u postgres psql

> CREATE USER root WITH SUPERUSER;

答案 1 :(得分: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

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

sudo -u postgres /bin/bash myfile.sh

感谢您的帮助