Наиболее приемлемый ответ на момент написания статьи (январь 2014 г.):
drop schema public cascade;
create schema public;
Это работает, однако, если вы хотите восстановить общедоступную схему в ее первоначальное состояние, это не полностью решит задачу. В pgAdmin III для PostgreSQL 9.3.1, если вы нажмете на «публичную» схему, созданную таким образом, и посмотрите в «панель SQL», вы увидите следующее:
-- Schema: public
-- DROP SCHEMA public;
CREATE SCHEMA public
AUTHORIZATION postgres;
Однако, напротив, новая база данных будет иметь следующее:
-- Schema: public
-- DROP SCHEMA public;
CREATE SCHEMA public
AUTHORIZATION postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;
COMMENT ON SCHEMA public
IS 'standard public schema';
Для меня я использую веб-фреймворк Python, который создает таблицы базы данных (web2py), используя ранее вызванные проблемы:
<class 'psycopg2.ProgrammingError'> no schema has been selected to create in
Так что, на мой взгляд, полностью правильный ответ:
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;
COMMENT ON SCHEMA public IS 'standard public schema';
(также обратите внимание, что для выдачи этих команд из pgAdmin III я пошел в Плагины-> Консоль PSQL)