Pg_restore终端中没有错误,但似乎没有改变任何东西



我在创建新数据库以进行测试时使用pg_restore时遇到问题。

我做了什么:

  • 我已经从我的日常备份中获取了用pg_dump oldDB -f /some/directory/oldDUMP.dmp创建的转储文件

  • 我已经登录到postgres用户并使用createdb -T template0 newDB创建新的数据库

  • 然后我尝试使用(在我的 oldDUMP.dmp 文件的文件夹中(pg_restore -d newDB oldDUMP.dmp但输出告诉我,由于转储在 txt 中,那么我应该登录到 psql

  • 我以 postgres ( psql ( 身份登录并再次输入pg_restore -d newDB oldDUMP.dmp。什么都没有出现(似乎有效(,但没有区别 - 测试数据库仍然是空的。

我尝试从其他用户那里做同样的事情,并尝试将 psql 登录到 newDB(因为据我所知,唯一psql命令记录到 postgres 因为我在 Linux 上被记录为 postgres(,但仍然没有区别。我不确定在哪里查找一些可能错误的日志。我一直担心我以某种方式覆盖了一些旧数据库,但我怀疑这是否可能。

知道我做错了什么吗?我是Postgresql/psql(和Linux(的新手,所以这可能是一些非常基本的问题,但我无法在Web中找到这样的问题。

但是输出告诉我,由于转储在 txt 中,那么我应该登录 psql

您需要为 psql 提供脚本作为输入。像这样:

psql < oldDUMP.dmp

我以postgres(psql(的身份登录并再次输入pg_restore -d newDB oldDUMP.dmp。什么也没出现(似乎有效(,但没有区别

您是否在 psql 提示符中键入了pg_restore?那是错误的地方。 pg_restore是一个程序,而不是一个SQL语句。什么也没发生的原因可能是因为你忘记用;终止语句 - 如果你这样做,你会得到一个SQL语法错误。

相关内容