Estoy usando postgresql 9.6, está bien ejecutar el comando psql:
select pg_cancel_backend(a.pid) from pg_locks a join pg_class b on a.relation = b.oid join pg_stat_activity c on a.pid = c.pid where c.datname = 'mydb' and a.mode like '%AccessShareLock%';Sin embargo, aparece un error: "ERROR: cancelación de la declaración debido a la solicitud del usuario" cuando ejecuto los siguientes scripts:
/app/postgres/pgsql/bin/psql -h "127.0.0.1" -p 6661 -U "postgres" -d "mydb" -tc "select pg_cancel_backend(a.pid) from pg_locks a > join pg_class b on a.relation = b.oid > join pg_stat_activity c on a.pid = c.pid > where c.datname = 'mydb' and a.mode like '%AccessShareLock%';"¿Cuál es la diferencia entre estos dos métodos?
Ambos métodos ejecutan la misma declaración, por lo que el resultado final es el mismo. Sin embargo, cuando usa el comando psql, puede ejecutarlo directamente desde el shell. El primer comando requiere que ya esté conectado a postgres.