恢复对 Postgres 功能的更改

Recover changes to Postgres function

我正在使用 \ef 编辑 Postgres 函数并更改了 RETURN 类型。没有意识到这是无法挽救的。

mattswheels=# \ef fib
mattswheels-# \g
ERROR:  cannot change return type of existing function
HINT:  Use DROP FUNCTION fib(numeric) first.

我写了很多代码 -- 有办法恢复吗?我知道 vim 说它保存在某处的 /tmp 文件夹中,但我不确定路径。

您可以从 PostgreSQL 日志中恢复失败的函数文本,因为它默认记录所有语法错误(包括错误编译函数)。日志在 $PGDATA/pg_log 中。尝试:

less `ls -t /var/lib/pgsql/*/data/pg_log/postgresql-*.log | head -n 1`