Sto cercando di scaricare alcune tabelle da un 9.5 beta 2 a un server 9.4.4. La forma del comando che sto usando è abbastanza standard:
pg_dump -t table dbname | psql -h hostname -d dbname
Sto usando l'utente di Postgres, che mi rendo conto che probabilmente non è l'ideale, ma poiché si tratta di entrambe le caselle di elaborazione dei dati di sviluppo che utilizzo solo ed è rilevante per l'errore che segue. Inizialmente, ho ricevuto l'errore
ERRORE: parametro di configurazione non riconosciuto "row_security"
che è previsto in quanto questa funzionalità è nuova in 9.5, e, sì, mi rendo conto che non è consigliabile pg_dump tra diverse versioni di Postgres, ma, purtroppo inevitabile, dato che ho colpito un bug molto oscuro e devo spostare un grande quantità di dati statici una volta.
Quindi, usando questo orribile hack per rimuovere l'errore row_security e attivando stop al primo errore:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
Ora ricevo:
ERRORE: autorizzazione negata per la creazione di "pg_catalog.tablename" DETTAGLIO: modifiche al catalogo di sistema attualmente non consentite
Sebbene possa essere indesiderabile utilizzare l'utente / il ruolo di Postgres, la mia comprensione è che non dovrebbero esserci problemi di autorizzazione di questo tipo. Sono aperto a qualsiasi suggerimento tenendo presente che si tratta di un'operazione una tantum e che si tratta di caselle di sviluppo di elaborazione dati non connesse ad alcun servizio live, quindi l'opportunità preferita rispetto alle politiche ideali di accesso ai dati aziendali. Detto questo, sarebbe bene capire come farlo correttamente ed evitarlo in futuro.