0

我试图从 3 天开始删除没有下降的“test123”数据库。Postgres 回复不存在这样的数据库。我不知道它是如何这样列出的。和带有 \r 的数据库

template1=# select * from pg_database;
        datname        | datdba | encoding | datcollate  |  datctype   | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace |               datacl                
-----------------------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+---------------+-------------------------------------
 template1             |     10 |        6 | en_US.UTF-8 | en_US.UTF-8 | t             | t            |           -1 |         12035 |          709 |          1663 | {=c/postgres,postgres=CTc/postgres}
 template0             |     10 |        6 | en_US.UTF-8 | en_US.UTF-8 | t             | f            |           -1 |         12035 |          709 |          1663 | {=c/postgres,postgres=CTc/postgres}
 postgres              |     10 |        6 | en_US.UTF-8 | en_US.UTF-8 | f             | t            |           -1 |         12035 |          709 |          1663 | 
 PremierSuppliers      |  16384 |        6 | en_US.UTF-8 | en_US.UTF-8 | f             | t            |           -1 |         12035 |          709 |          1663 | 
 \r                   +|  16384 |        6 | en_US.UTF-8 | en_US.UTF-8 | f             | t            |           -1 |         12035 |          709 |          1663 | 
 test123               |        |          |             |             |               |              |              |               |              |               | 

任何解决方法?删除 \r 和 test123 。我需要知道 \r 中的“+”是什么。以及如何放下它。只是为了让您知道我已经尝试了此处针对类似问题给出的步骤,但我的问题没有解决。

4

1 回答 1

1

有问题的数据库名称似乎包含一个回车符(ASCII 代码 13,显示为\r),后跟一个换行符(ASCII 代码 10),然后是字符串test123

字符序列 13,10 是 Windows 中的行尾。

+psql 添加列末尾的符号作为该列在下一行继续的视觉指示。它不是数据库名称的一部分。

您可以通过发出以下命令来确认确切的字符代码:

SELECT encode(datname::bytea,'hex') from pg_database where datname like '%test123';

预期的结果将是0d0a74657374313233除了 CRLF 之外没有空格。(否则请用实际结果更新问题)。

如果psql在具有 readline 功能的 Unix 中使用,您可以使用以下击键序列删除数据库:

删除数据库“ Ctrl+VCtrl+MEntertest123”;Enter

当点击Ctrl+VCtrl+M屏幕时应该显示^M

编辑

如果您无法psql在交互模式下管理它,作为替代方案,这也应该从 bash 工作,由 postgres 用户或数据库所有者启动:

echo -e "DROP DATABASE \"\r\ntest123\";" | psql -d template1

启用反斜杠转义解释的选项-eecho

于 2013-10-15T22:30:35.400 回答