2017-08-16 1 views
0

J'essaye de transférer ma base de données de dev sur l'ordinateur portable à un poste de travail. C'est en me donnant toutes sortes d'erreurs, je ne suis pas sûr de savoir comment restaurer correctement cette décharge db. sans -1 il finit, mais avec beaucoup d'objets manquants.postgresql: erreur pg_restore avec "DETAIL: les modifications du catalogue système sont actuellement interdites."

Le nom de la base de données sur la machine cible est différent de celui que vous avez copié. Mais je ne vois pas comment cela pourrait être lié aux erreurs. Totalement nouveau sur cette chose de vidage/restauration. Je ne vois aucune chose au sujet de catalogue système dans pg_restore -l Je suis sur des indices ...

D:\db>pg_restore -d checkpoint -U postgres --disable-triggers -x -O - 
1 -v -n temp dump-1.backup 
pg_restore: connecting to database for restore 
Password: 
pg_restore: creating TYPE "temp.my_agg" 
pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 1037; 1247 89882 TYPE my_agg po 
stgres 
pg_restore: [archiver (db)] could not execute query: ERROR: permission denied t 
o create "pg_catalog.my_agg" 
DETAIL: System catalog modifications are currently disallowed. 
    Command was: CREATE TYPE my_agg AS (
     ecnt integer, 
     eids integer 
); 

semble tomber -n temp pour se débarrasser du problème de privilege. mais encore plus d'erreurs à venir

pg_restore: creating FUNCTION "public.cmptime(timestamp without time zone, text, 
timestamp without time zone, text, text)" 
pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 355; 1255 60129 FUNCTION cmptim 
e(timestamp without time zone, text, timestamp without time zone, text, text) po 
stgres 
pg_restore: [archiver (db)] could not execute query: ERROR: language "plv8" doe 
s not exist 
    Command was: CREATE FUNCTION cmptime(t0 timestamp without time zone, s0 text 
, t1 timestamp without time zone, s1 text, rcode text) RETURN... 

après l'extension manuellement plv8 et plpython. ces erreurs de langue ont disparu. J'ai un problème avec cette table FDW.

pg_restore: creating FOREIGN TABLE "public.t1" 
pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 204; 1259 25543 FOREIGN TABLE r 
edrawing postgres 
pg_restore: [archiver (db)] could not execute query: ERROR: server "myserver1" 
does not exist 
    Command was: CREATE FOREIGN TABLE t1 (
    fid bigint, 
    pd_date text, 
    team text, 
    shift text, 
    line text, 
    opr1 te... 

J'ai essayé de créer l'extension FDW. mais FDW dépend du schéma public. Suppression -c --if-exists Option pg_restore, recréation de la base de données de points de contrôle avant chaque tentative de restauration.

pg_restore: [archiver (db)] could not execute query: ERROR: server "myserver1" 
does not exist 
    Command was: CREATE FOREIGN TABLE t1 (
    fid bigint, 
    pd_date text, 
    team text, 
    shift text, 
    line text, 
    opr1 te... 

ayant encore des problèmes avec FDW. doit créer chaque serveur FDW, après chaque nouvelle erreur FDW rencontrée (je ne me souviens pas de tous). Bouclez ce processus jusqu'à ce que toutes les erreurs du serveur FDW aient disparu (est-ce vraiment la façon dont la restauration de la base de données sans erreur est supposée être effectuée ....?). erreur suivante

pg_restore: [archiver (db)] could not execute query: ERROR: server "myserver1" 
does not exist 
    Command was: CREATE FOREIGN TABLE t1 (
    fid bigint, 
    pd_date text, 
    team text, 
    shift text, 
    line text, 
    opr1 te... 

J'ai vues matérialisées à mettre en cache les fonctions de plpython résultats. mais une partie de leur logique est dépréciée, ne peut pas être facilement réparée. Je suppose que ma restauration sans erreur se termine ici. avoir à supprimer -1 mode de transaction unique. Erreur totale ignorée jusqu'à 6 à partir de 55. On dirait que la plupart des objets sont de retour.

Est-il possible de negelect le processus d'actualisation de la vue materalized ...

Répondre

0

Les messages d'erreur semble étrange - mais si bien comprendre, PostgreSQL essayez de restaurer le type de données personnalisé dans le schéma public ce qui devrait être interdit - s'il vous plaît , essayez de vider le schéma uniquement au format SQL et assurez-vous que le schéma pg_catalogue n'est pas directement modifié.

Les extensions doivent d'abord être installées - l'installation de l'extension a deux parties 1: installer les codes rpm/compilés vers le serveur de base de données, 2: l'enregistrement de l'extension par base de données. Seule la deuxième étape devrait être faite par sauvegarde.

Le message d'erreur pg_restore: [archiver (db)] could not execute query: ERROR: server "myserver1" does not exist est propre - probablement quelque part l'instruction CREATE SERVER échoue - probablement due extension manquante sur le serveur.