LINUX.ORG.RU
решено ФорумAdmin

Удалить Postgresql БД с пайпом и пробелами в имени базы

 


0

3

Приветствую, товарисчи! Есть БД Postgresql с именем «his |grep restor», которая была создана корявым скриптом на продакшн-сервере Postgresql. Удалить её никак не получается, как и подключиться к ней - «ВАЖНО: база данных «his |grep restor» не существует», а она есть:

psql -U postgres -h localhost -l | grep -e Name -e "^ his"
         Name         |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
 his     |grep restor | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 |

Что только уже не пробовал - заключать имя в одинарные и двойные кавычки, экранировать, удалять через прослойку dropdb, подставлять аски-коды вмесо пайпа - не помогло. При этом пробовал создать на тестовой виртуалке БД с таким именем и удалить её - удаляется без проблем.. Только нет нужного опыта работы с Postgresql, чтобы понять как это вылечить. Есть у кого-нить идеи?



Последнее исправление: Yar4e (всего исправлений: 1)

Покажи вывод команды printf %q "$(psql -U postgres -h localhost -l | grep -e "^ his")"

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)

а зачем удалять ? Она же пуста ?

При этом пробовал создать на тестовой виртуалке БД с таким именем и удалить её - удаляется без проблем..

Видимо там другая версия bash/sh - да и postgresql может отличаться ?

Можешь попробовать сделать pg_dumpall без данных и посмотреть как там название интерпретируется

Jopich1
()
Последнее исправление: Jopich1 (всего исправлений: 3)
Ответ на: комментарий от vel

Спасибо огромное! Сработало! Такое очевидное решение было, что аж стыдно, что сам не допёр)

Yar4e
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.