我正在尝试从3天开始放弃'test123'DB,这不会下降。没有这样的数据库的Postgres回复存在..我不知道它是如何列出这样的。和\ r \ n
的数据库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 \ n中放置的'+'是什么。以及如何放弃它。只是为了让你知道我已经尝试了类似问题here给出的步骤,但我的问题没有解决。
答案 0 :(得分:1)
有问题的数据库名称似乎包含回车符(ASCII代码13,显示为\r
),后跟换行符(ASCII代码10),后跟字符串test123
字符序列13,10是Windows中的行尾。
列末尾的+
符号由psql添加,作为列在下一行继续的可视指示。它不是数据库名称的一部分。
您可以通过发出以下内容确认确切的字符代码:
SELECT encode(datname::bytea,'hex') from pg_database where datname like '%test123';
如果CRLF之外没有空格,则预期结果为0d0a74657374313233
。 (否则请用实际结果更新问题。)
如果在Unix中使用psql
并具有readline功能,则可以使用以下按键序列删除数据库:
DROP DATABASE" Ctrl + V Ctrl + M 输入 test123&#34 ;; 输入
点击 Ctrl + V Ctrl + M 时,屏幕应显示^M
修改强>:
如果您无法在交互模式下在psql
内进行管理,作为替代方案,这也应该来自bash,由postgres用户或数据库所有者启动:
echo -e "DROP DATABASE \"\r\ntest123\";" | psql -d template1
-e
的{{1}}选项可以解释反斜杠转义。