Vous n'êtes pas identifié(e).
Bonjour,
J'aimerai installer la dernière version de postgresql sur mon serveur qui a déjà la version 8.4 sur ubuntu.
je veux garder les 2 version pour les tests,
j'ai vu cette solution ci-dessous sur internet, j'aimerai avoir votre suggestion avant de l'utiliser
---------------------------------------------------------------
first install python-software-properties:
sudo apt-get install python-software-properties
now add repository and update apt.
sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update
now instal postgresql
sudo apt-get install postgresql-9.1 libpq-dev
Now change the postgres user password (still running as root):
su postgres
psql -d postgres -U postgres
alter user postgres with password 'a';
\q
To install GUI client pgsql
sudo apt-get install pgadmin3
----------------------
Merci
Hors ligne
Bonjour,
la marche à suivre est la bonne.
Vous devriez également installer les packages postgresql-client-9.1 et postgresql-contrib-9.1
A noter que add-apt-repository ne rajoutera pas une ligne dans votre sources.list mais créera un sous répertoire sources.list.d avec 2 fichiers par dépôt ajouté via cette commande.
Veillez aussi à choisir un mot de passe pour l'utilisateur postgres en fonction de vos besoins (sans doute le même que celui de votre base en 8.4)
Edit: Je ne sais pas quelle est la configuration de base de postgresql sous ubuntu, donc il faut bien vous assurer que la commande psql pointe sur le nouveau serveur et pas sur l'ancien. Un select version(); vous affichera le détail de la version sur laquelle vous êtes connecté.
Dernière modification par rjuju (16/04/2012 18:52:18)
Julien.
https://rjuju.github.io/
Hors ligne
salut,
je vous donne la procédure que j'ai faite.
apt-get install -y python-software-properties
sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update
apt-get install postgresql-9.1 libpq-dev postgresql-client-9.1 postgresql-client-9.1
------
et les logs apparus apres l'installation
Creating new cluster (configuration: /etc/postgresql/9.1/main, data: /var/lib/postgresql/9.1/main)...
Moving configuration file /var/lib/postgresql/9.1/main/postgresql.conf to /etc/postgresql/9.1/main...
Moving configuration file /var/lib/postgresql/9.1/main/pg_hba.conf to /etc/postgresql/9.1/main...
Moving configuration file /var/lib/postgresql/9.1/main/pg_ident.conf to /etc/postgresql/9.1/main...
Configuring postgresql.conf to use port 5433...
update-alternatives: using /usr/share/postgresql/9.1/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.
* Starting PostgreSQL 9.1 database server
------------------------------------
lorsque je demare postgresql, jai ce message
root@db:~# su postgres
postgres@db:/root$ psql --version
could not change directory to "/root"
psql (PostgreSQL) 8.4.11
contains support for command-line editing
postgres@db:/root$ psql -p5433
could not change directory to "/root"
psql (8.4.11, server 9.1.3)
WARNING: psql version 8.4, server version 9.1.
Some psql features might not work.
Type "help" for help.
postgres=# select version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 9.1.3 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3, 64-bit
(1 row)
--------------------------
que dois je faire pour corriger ce problème?
merci
Hors ligne
Quel problème cherchez-vous à corriger ?
Guillaume.
Hors ligne
Je pense que vous parlez du warning lors de l'ouverture de psql.
Sur ubuntu, il y a une "surcouche" à postgres pour gérer les clusters, les versions concurrentes etc mais je n'ai jamais vraiment utilisé ces fonctionnalités.
Vous pouvez soit désinstaller votre package postgresql-client-8.4 qui ne devrait plus vous servir, ou regarder le script /usr/bin/psql et voir pourquoi c'est le binaire de la 8.4 qui est utilisé et non celui de la 9.1.
Dernière modification par rjuju (16/04/2012 23:09:19)
Julien.
https://rjuju.github.io/
Hors ligne
Les erreurs "could not change directory to /root" se résolvent en faisant
su - postgres au lieu de su postgres
Le "WARNING: psql version 8.4, server version 9.1." est dû au fait que le cluster par défaut sur le système est 8.4/main
Pour se mettre dans l'environnement de la 9.1, les 2 solutions les plus simples sont:
1) ajouter un argument
psql --cluster 9.1/main ...
2) créer la variable d'environnement:
export PGCLUSTER=9.1/main
Il y a encore d'autres solutions avec des fichiers de config évoqués dans la doc en ligne (faire man pg_wrapper)
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Merci pour le partage
Hors ligne
Salut, ca marche bien la derniere slution.
mais j'ai un problème au niveau des variables locales, je mets les logs pour plus de details.
postgres@db:~$ su - postgres
postgres@db:~$ export PGCLUSTER=9.1/main
postgres@db:~$ psql postgres
psql (9.1.3)
Type "help" for help.
postgres=# CREATE DATABASE db_test
postgres-# WITH OWNER = sinfra
postgres-# ENCODING = 'UTF8'
postgres-# TABLESPACE = pg_default
postgres-# LC_COLLATE = 'en_US.UTF-8'
postgres-# LC_CTYPE = 'en_US.UTF-8'
postgres-# CONNECTION LIMIT = -1;
ERROR: new collation (en_US.UTF-8) is incompatible with the collation of the template database (en_CA.UTF-8)
HINT: Use the same collation as in the template database, or use template0 as template.
postgres=# \q
postgres@db:~$ export PGCLUSTER=8.4/main
postgres@db:~$ psql
psql (8.4.11)
Type "help" for help.
postgres=# CREATE DATABASE db_test WITH OWNER = sinfra
postgres-# ENCODING = 'UTF8'
postgres-# TABLESPACE = pg_default
postgres-# LC_COLLATE = 'en_US.UTF-8'
postgres-# LC_CTYPE = 'en_US.UTF-8'
postgres-# CONNECTION LIMIT = -1;
LOG: duration: 895.870 ms statement: CREATE DATABASE db_test WITH OWNER = sinfra
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;
CREATE DATABASE
----------------------------------------
quand, j'affiche mes variables locales
root@db:~# locale
LANG=en_CA.UTF-8
LANGUAGE=
LC_CTYPE="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=
--------------------------
apparemment, il ya incompatibilité au niveau des variables locales qui marchait bien avec la versions 8.4, alors que la 9.1 n'admet pas.
quel conseils pour cela?
Merci
Hors ligne
Salut,
j'ai regle ce probleme en utilisant template0
CREATE DATABASE db_test
WITH OWNER = sinfra
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_CA.UTF-8'
LC_CTYPE = 'en_CA.UTF-8'
CONNECTION LIMIT = -1 TEMPLATE template0;
je fais d'autres tests, merci
Hors ligne
Je pense que c'est en utilisant
LC_COLLATE = 'en_CA.UTF-8'
LC_CTYPE = 'en_CA.UTF-8'
que la création a marché, pas grâce à l'utilisation de template0.
Essayez:
CREATE DATABASE db_test
WITH OWNER = sinfra
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1 TEMPLATE template0;
et je pense que ça ne marchera pas.
Hors ligne
salut,
desole, c'est bien cette syntaxe qui marche
CREATE DATABASE db_test
WITH OWNER = tc50
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1 TEMPLATE template0;
comme je l'ai dit, c'est bien avec l'utilisation de template0 que ca marche
Hors ligne