Bonjour à tous,
Je suis assez novice sur PostgreSQL et je dois déployer une mise à jour d'une appli d'un poste de travail vers un serveur de préprod sur un OVH mutualisé.
Parmi les mises à déployer, il faut ajouter deux valeurs à un type enum.
Sur le poste de travail, le serveur installé est PostgreSQL 9.6rc1. La mise a jour est passée sans souci via les requêtes suivantes:
Sur le serveur de préprod, il s'agit d'un PostgreSQL 8.4.22lts1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO pg_enum (enumlabel,enumtypid,enumsortorder) select 'B Hol', t.oid, max(e.enumsortorder)+1 from pg_type t, pg_enum e WHERE t.typname='hour_type' AND e.enumtypid=t.oid GROUP BY t.oid; INSERT INTO pg_enum (enumlabel,enumtypid,enumsortorder) select 'Nightshift', t.oid, max(e.enumsortorder)+1 from pg_type t, pg_enum e WHERE t.typname='hour_type' AND e.enumtypid=t.oid GROUP BY t.oid;
J'ai rapidement compris que la table pg_enum n'avait pas de colonne enumsortorder dans cette ancienne version et j'ai donc adapté les requêtes pour ignorer l'ordre:
Seulement le serveur mutualisé OVH me répond
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO pg_enum (enumlabel,enumtypid) select 'B Hol', t.oid from pg_type t, pg_enum e WHERE t.typname='hour_type' AND e.enumtypid=t.oid; INSERT INTO pg_enum (enumlabel,enumtypid) select 'Nightshift', t.oid from pg_type t, pg_enum e WHERE t.typname='hour_type' AND e.enumtypid=t.oid;
Existe t'il un autre moyen d'ajouter des valeurs à un enum ?Erreur SQL :
ERREUR: droit refusé pour la relation pg_enum
Dans l'instruction :
INSERT INTO pg_enum (enumlabel,enumtypid) select 'B Hol', t.oid from pg_type t, pg_enum e WHERE t.typname='hour_type' AND e.enumtypid=t.oid;
INSERT INTO pg_enum (enumlabel,enumtypid) select 'Nightshift', t.oid from pg_type t, pg_enum e WHERE t.typname='hour_type' AND e.enumtypid=t.oid;
J'ai pensé à supprimer le type pour le recréer avec toutes ses valeurs mais j'ai peur que les valeurs déjà en place étant utilisées, je casse des références et mette toute la base en l'air...
Toute aide sera la bienvenue
Merci d'avance
Partager