J'essaie de vider certaines tables d'une version 9.5 beta 2 vers un serveur 9.4.4. La forme de la commande que j'utilise est assez standard:
pg_dump -t table dbname | psql -h hostname -d dbname
J'utilise l'utilisateur Postgres, ce qui, je le sais, n'est probablement pas idéal, mais comme ce sont les deux boîtiers de traitement de données de développement que seul j'utilise et que cela est pertinent pour l'erreur qui suit. Au départ, j'ai eu l'erreur
ERREUR: paramètre de configuration non reconnu "row_security"
ce qui est attendu car cette fonctionnalité est nouvelle dans 9.5, et, oui, je me rends compte qu'il n'est pas conseillé de pg_dump entre les différentes versions de Postgres, mais, malheureusement inévitable, étant donné que j'ai rencontré un bug très obscur et que je dois déplacer un grand quantité de données statiques une fois.
Donc, en utilisant ce hack hideux pour supprimer l'erreur row_security, et en activant stop on first error:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
Je reçois maintenant:
ERREUR: autorisation refusée de créer "pg_catalog.tablename" DÉTAIL: les modifications du catalogue système sont actuellement interdites
Bien qu'il puisse être indésirable d'utiliser le rôle / utilisateur Postgres, je crois qu'il ne devrait pas y avoir de problèmes d'autorisation de cette nature. Je suis ouvert à toutes suggestions en gardant à l'esprit qu'il s'agit d'une opération ponctuelle et qu'il s'agit de boîtes de développement de traitement de données non connectées à des services en direct, donc l'opportunité est préférable aux politiques d'accès aux données d'entreprise idéales. Cela dit, il serait bon de comprendre comment procéder correctement et éviter cela à l'avenir.