Lists: | Postg토토 베이SQL : Postg토토 |
---|
From: | Jean-Christophe Weis <jcweis(at)melix(dot)net> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | ERROR: Postmaster environment variable 'PGDATA2' not set |
Date: | 2004-06-30 18:47:26 |
Message-ID: | 20040630184726.GA3152@max.my.domain |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Salut la liste,
J'ai integre depuis peu le groupe de traduction de la documentation de
PostgreSQL.
Comme je ne comprenais pas la section 18.5 (Server Administration > Managing
Databases > Alternative Locations) que je dois traduire, j'ai voulu essayer
les manips, mais sans succes.
Mon probleme est le suivant:
J'ai une debian woody, <3.0r1>. Ma version de PostgreSQL est <7.2.1-2>.
J'ai cree un repertoire pour une nouvelle aire de stockage de donnees, dans
mon repertoire d'utilisateur lambda, avec les permissions qui vont bien:
| root# ls -ld /home/jc/
| drwxr-xr-x 29 jc jc 4096 Jun 29 19:18 /home/jc/
| root# ls -ld /home/jc/postgres
| drwx------ 3 postgres postgres 4096 Jun 29 19:59 /home/jc/postgres/
Le serveur a l'arret, je definis et j'exporte une variable nommee PGDATA2:
| root# PGDATA2=/home/jc/postgres/data
| root# export PGDATA2
Je cree la nouvelle aire de stockage sous l'identite systeme postgres:
| root# su postgres
| postgres$ /usr/lib/postgresql/bin/initlocation PGDATA2
| The location will be initialized with username "postgres".
| This user will own all the files and must also own the server process.
|
| Creating directory /home/jc/postgres/data
| Creating directory /home/jc/postgres/data/base
|
| initlocation is complete.
| You can now create a database using
| CREATE DATABASE <name> WITH LOCATION = 'PGDATA2'
| in SQL, or
| createdb <name> -D 'PGDATA2'
| from the shell.
Apparemment tout va bien, je relance le serveur:
| postgres$ exit
| root# /etc/init.d/postgresql start
| ...
Mais quand j'essaie de creer une base de donnees dans la nouvelle aire sous
l'identite systeme postgres, ca ne marche pas:
| root# su postgres
| postgres$ createdb testdb -D 'PGDATA2'
| ERROR: Postmaster environment variable 'PGDATA2' not set
| createdb: database creation failed
| postgres$ createdb testdb -D PGDATA2
| ERROR: Postmaster environment variable 'PGDATA2' not set
| createdb: database creation failed
| postgres$ createdb testdb -D $PGDATA2
| ERROR: Absolute paths are not allowed as database locations
| createdb: database creation failed
Le probleme semble etre que je n'arrive pas a passer la variable PGDATA2 dans
l'environnement du serveur... Pourtant je l'ai bien definie et exportee dans
le shell root d'ou je lance le serveur... Une idee?
Merci, JC Weis.
From: | Bruno <bruno(dot)leveque(at)net6d(dot)com> |
---|---|
To: | Jean-Christophe Weis <jcweis(at)melix(dot)net> |
Cc: | pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: ERROR: Postmaster environment variable |
Date: | 2004-06-30 20:10:25 |
Message-ID: | Pine.LNX.4.58.0406302206200.19492@moissac.leveque.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonsoir,
1 - la ligne qu'il "faudrait" utiliser est :
postgres$ createdb testdb -D $PGDATA2
2 - Le seul problème semblerait-il est qu'il faille recompiler postgres pour que ce soit accepté. cf -> man 7 create_database
option ALLOW_ABSOLUTE_DBPATHS lors du configure.
Bruno
On Wed, 30 Jun 2004, Jean-Christophe Weis wrote:
>
> Salut la liste,
>
> J'ai integre depuis peu le groupe de traduction de la documentation de
> PostgreSQL.
>
> Comme je ne comprenais pas la section 18.5 (Server Administration > Managing
> Databases > Alternative Locations) que je dois traduire, j'ai voulu essayer
> les manips, mais sans succes.
>
> Mon probleme est le suivant:
>
> J'ai une debian woody, <3.0r1>. Ma version de PostgreSQL est <7.2.1-2>.
>
> J'ai cree un repertoire pour une nouvelle aire de stockage de donnees, dans
> mon repertoire d'utilisateur lambda, avec les permissions qui vont bien:
>
> | root# ls -ld /home/jc/
> | drwxr-xr-x 29 jc jc 4096 Jun 29 19:18 /home/jc/
> | root# ls -ld /home/jc/postgres
> | drwx------ 3 postgres postgres 4096 Jun 29 19:59 /home/jc/postgres/
>
> Le serveur a l'arret, je definis et j'exporte une variable nommee PGDATA2:
>
> | root# PGDATA2=/home/jc/postgres/data
> | root# export PGDATA2
>
> Je cree la nouvelle aire de stockage sous l'identite systeme postgres:
>
> | root# su postgres
> | postgres$ /usr/lib/postgresql/bin/initlocation PGDATA2
> | The location will be initialized with username "postgres".
> | This user will own all the files and must also own the server process.
> |
> | Creating directory /home/jc/postgres/data
> | Creating directory /home/jc/postgres/data/base
> |
> | initlocation is complete.
> | You can now create a database using
> | CREATE DATABASE <name> WITH LOCATION = 'PGDATA2'
> | in SQL, or
> | createdb <name> -D 'PGDATA2'
> | from the shell.
>
> Apparemment tout va bien, je relance le serveur:
>
> | postgres$ exit
> | root# /etc/init.d/postgresql start
> | ...
>
> Mais quand j'essaie de creer une base de donnees dans la nouvelle aire sous
> l'identite systeme postgres, ca ne marche pas:
>
> | root# su postgres
> | postgres$ createdb testdb -D 'PGDATA2'
> | ERROR: Postmaster environment variable 'PGDATA2' not set
> | createdb: database creation failed
>
> | postgres$ createdb testdb -D PGDATA2
> | ERROR: Postmaster environment variable 'PGDATA2' not set
> | createdb: database creation failed
>
> | postgres$ createdb testdb -D $PGDATA2
> | ERROR: Absolute paths are not allowed as database locations
> | createdb: database creation failed
>
> Le probleme semble etre que je n'arrive pas a passer la variable PGDATA2 dans
> l'environnement du serveur... Pourtant je l'ai bien definie et exportee dans
> le shell root d'ou je lance le serveur... Une idee?
>
>
> Merci, JC Weis.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html
>
Bruno LEVEQUE
Net6D
http://www.net6d.com
bruno(dot)leveque(at)net6d(dot)com
From: | Francois Suter <dba(at)paragraf(dot)ch> |
---|---|
To: | Jean-Christophe Weis <jcweis(at)melix(dot)net> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: ERROR: Postmaster environment variable 'PGDATA2' not set |
Date: | 2004-07-01 07:08:20 |
Message-ID: | 6F27BCCC-CB2D-11D8-B935-000393427520@paragraf.ch |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
> | root# PGDATA2=/home/jc/postgres/data
> | root# export PGDATA2
>
> Je cree la nouvelle aire de stockage sous l'identite systeme postgres:
>
> | root# su postgres
> | postgres$ /usr/lib/postgresql/bin/initlocation PGDATA2
Je ne suis pas un grand spécialiste Unix, mais il me semble que,
lorsque tu fais le "su postgres", tu ouvres un nouveau process, dans
lequel PGDATA2 n'existe donc pas. Ne faudrait-il pas faire
"PGDATA2=/home/jc/postgres/data" et "export PGDATA2" après le "su
postgres"?
---------------
Francois
Home page: http://www.monpetitcoin.com/
"Nous sommes peu à penser trop, trop à penser peu." - Françoise Sagan
From: | Jean-Christophe Weis <jcweis(at)melix(dot)net> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: ERROR: Postmaster environment variable 'PGDATA2' not set |
Date: | 2004-07-02 16:06:23 |
Message-ID: | 20040702160623.GA1879@max.my.domain |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | Postg토토 베이SQL : Postg토토 |
Salut la liste,
Apres une petite discussion sur pgsql-admin(at)postgresql(dot)org, il apparait que
mon probleme etait que le script d'init du serveur ('/etc/init.d/postgresql')
fait un 'su - postgres' et non pas un 'su postgres'. Il ne sert donc a rien
que la variable PGDATA2 soit definie et marquee pour exportation dans le shell
root d'ou l'on lance le serveur, parce qu'a cause du tiret de 'su -'
l'environnement courant n'est pas passe au nouveau shell. L'environnement du
nouveau shell est celui que l'on aurait si l'on se loguait directement comme
utilisateur 'postgres' (ce que je ne sais pas faire d'ailleurs, sans mot de
passe...).
Donc la solution, c'est soit de virer le tiret dans le script d'init, mais ca
me parait ose (et de toute facon il faudrait definir PGDATA2 quelque part),
soit de definir et marquer pour exportation la variable PGDATA2 dans le
'.profile' de l'utilisateur 'postgres' ('/var/lib/postgres/.profile').
La traduction va pouvoir reprendre apres une petite pause, vu le temps que ca
m'a pris...
--
JC Weis <jcweis(at)melix(dot)net>