On Tue, Jan 12, 2010 at 7:17 AM, Greg Smith <g...@2ndquadrant.com> wrote:
> AI Rumman wrote: > >> I used the followings: >> create tablespace mytabspc location '/var/lib/pgsql/data/pg_tblspc'; >> create database mydb with tablespace=mytabspc; >> drop database mydb; >> drop tablespace mytabspc; >> ERROR: tablspace 'mytabspc' is not empty >> Please tell me why? >> > > You don't put things in pg_tblspace yourself; that directory is for the > database to manage. Your tablespace should be somewhere completely outside > of /var/lib/pgsql/data altogether. Tablespaces in postgres are quite a bit different from Oracle. In Oracle, you define a tablespace to be a location that uses one or more datafiles, and everything belongs in a tablespace. In postgres, a tablespace is not required. It is nothing more than a directory on some filesystem that you tell postgres about so that you can store relations in it. If you don't define a tablespace in postgres, all of your relations are going to be located in /var/lib/pgsql/base. That's the difference, you don't NEED a tablespace like Oracle, you'll only use them in postgres when you're trying to store data in postgres on a different mountpoint. Hope this helps. --Scott