Une supposition :vous utilisez Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux ou l'une des autres distributions qui activent SELinux par défaut.
Soit et sur votre système d'exploitation/version particulier, les politiques SELinux pour PostgreSQL ne permettent pas au serveur de lire des fichiers en dehors du répertoire de données PostgreSQL, soit le fichier a été créé par un service couvert par une politique ciblée, il a donc une étiquette que PostgreSQL n'est pas autorisé à lire.
Vous pouvez confirmer s'il s'agit ou non du problème en exécutant, en tant que root :
setenforce 0
puis re-test. Exécuter :
setenforce 1
pour réactiver SELinux après le test. setenforce
n'est pas permanent ; De toute façon, SELinux sera automatiquement réactivé au redémarrage. La désactivation permanente de SELinux n'est généralement pas une bonne solution pour des problèmes comme celui-ci; si vous confirmez que le problème est SELinux, il peut être exploré plus en détail.
Puisque vous n'avez pas spécifié le système d'exploitation ou la version que vous utilisez, la version de PostgreSQL, la commande exacte que vous exécutez, ls -al
sur le fichier, \d+
sur la table, etc, il est difficile de donner plus de détails, ou de savoir si c'est plus qu'une supposition. Essayez de mettre à jour votre réponse pour inclure tout cela et un ls --lcontext
du fichier aussi.