基于这个问题,我正在尝试使用 fabric 命令删除我的 postgresql 数据库中的所有表。我试图运行的 bash 命令是
#!/bin/bash
TABLES=`psql $PGDB -t --command "SELECT string_agg(table_name, ',') FROM information_schema.tables WHERE table_schema='public'"`
echo Dropping tables:${TABLES}
psql $PGDB --command "DROP TABLE IF EXISTS ${TABLES} CASCADE"
在我的 fab 脚本中变成:
def delete_tables():
the_command = "SELECT string_agg(table_name, ',') FROM information_schema.tables WHERE table_schema='public'"
run("TABLES=`psql -U db_user -d db_name $PGDB -t --command %s`" % the_command)
但错误是,Peer authentication failed for user "string_agg"
。这似乎表明该命令不被视为“”之间的命令,而是一个长的单个字符串......
我试过转换:
'
成 '\''
,但没有运气。欢迎任何建议。