Re: Sequences not moved to new tablespace

Поиск
Список
Период
Сортировка
От Guillaume Drolet
Тема Re: Sequences not moved to new tablespace
Дата
Msg-id CAOkiyv7VXpygV=eeny-S-VbZavTLdAgOsJxqYf=feT0k4FrGNQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Sequences not moved to new tablespace  (Albe Laurenz <laurenz.albe@wien.gv.at>)
Ответы Re: Sequences not moved to new tablespace  (Albe Laurenz <laurenz.albe@wien.gv.at>)
Список pgsql-general


2015-02-24 8:45 GMT-05:00 Albe Laurenz <laurenz.albe@wien.gv.at>:
Guillaume Drolet wrote:
> Digging a little more, I found that not only sequences were not moved but also many tables in
> pg_catalog are still in my old tablespace. This is expected since the query in the SQL files I used to
> move the tables and indexes had a WHERE clause like this:
>
> SELECT ' ALTER TABLE ' || schemaname || '.' || tablename || ' SET TABLESPACE pg_default;'
> FROM pg_tables
> WHERE schemaname NOT IN ('pg_catalog', 'information_schema');
>
> So I tried removing the WHERE clause and running the script again:
> psql -U postgres -d mydb < move_tables_to_pg_default.sql | findstr /R /C:"[ALTER]" | psql -d mydb -U
> postgres
>
> I got many errors like this one:
> ERROR:  permission denied: "pg_event_trigger" is a system catalog
>
> If I can't move tables from pg_catalog, how will I be able to drop that tablespace I don't want to use
> anymore?
>
> I am thinking that maybe using "ALTER DATABASE mydb SET TABLESPACE pg_default;" instead would take
> care of all this, no?
>
> But when I tried it last week, I got a message like: some relations already in target tablespace...
>
> Any help will be much appreciated.

If you want to move a whole database to a different tablespace (the only reason
I can think of for doing what you are trying to so), use the command
ALTER DATABASE ... SET TABLESPACE ...

Thanks Laurenz. I tried your suggestion:

psql -U postgres -c "ALTER DATABASE mydb SET TABLESPACE pg_default;"

I get this message:

ERROR:  some relations of database "mortalite" are already in tablespace "pg_default"
HINT : You must move them back to the database's default tablespace before using this command.

But if I do "SHOW default_tablespace;" in mydb, it showed "pg_default" as the default tablespace.

So I tried changing it back to the tablespace I want to get rid of to subsequently moved everything back there so that ultimately, it lets me move everything to pg_default:

ALTER DATABASE mydb SET default_tablespace = diamonds;

And then:

psql -U postgres -c "ALTER DATABASE mydb SET TABLESPACE diamonds;"

ALTER DATABASE is issued but nothing gets physically moved to diamonds. Why?



Yours,
Laurenz Albe

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Sequences not moved to new tablespace
Следующее
От: Guillaume Drolet
Дата:
Сообщение: Re: Sequences not moved to new tablespace