PGError: ERREUR: source de la base de données “template1” est accessible par d'autres utilisateurs
Je vais avoir des problèmes pour obtenir des tests de travailler avec Postgresql et Rails 3.
À la fois le développement et la production de bases de données que je peux obtenir de bien fonctionner, cependant, le test de la base de données jette les erreurs suivantes lorsque je lance rake
ou db:test:prepare
, etc.
PGError: ERREUR: source de la base de données "template1" est accessible par d'autres utilisateurs
Mise à jour
Googler autour, il semble que l'on devrait utiliser template0
au lieu de template1
lors de l'utilisation de createdb pour créer une nouvelle base de données Postgres. Dans le typique “Donc je vais supprimer la cause. Mais pas le symptôme” de la mode, j'ai trouvé vendor/rails/railities/lib/task/databases.rake
et changé de ligne 109 à lire:
createdb #{enc_option} \
-U "#{abcs["test"]["username"]}" \
-T template0 #{abcs["test"]["database"]}
Mais je n'ai pas vraiment envie de le faire, que je suis sur les Rails comme un BIJOU, tout savoir de l'autre de contourner ou résoudre?
base de données.yml:
development:
adapter: postgresql
encoding: unicode
database: test1234_development
pool: 5
username: holden
password: postgres
test:
adapter: postgresql
encoding: unicode
database: test1234_test
pool: 5
username: holden
password: postgres
D'erreur complet:
AVIS: base de données "test1234_test" n'existe pas, en sautant
PGError: ERREUR: source de la base de données "template1" est accessible par d'autres utilisateurs
DÉTAIL: Il y a 1 autre session(s) à l'aide de la base de données.
: CRÉER une BASE de données "test1234_test" ENCODING = "unicode"
OriginalL'auteur holden | 2011-02-12
Vous devez vous connecter pour publier un commentaire.
Histoire courte:
CREATE DATABASE
fonctionne en copiant une base de données existante. PostgreSQL ne vous laisseront pas de copier une base de données si une autre session est connectée à elle. Si template1 est accessible par d'autres utilisateurs,CREATE DATABASE
échouera.La question que vous devez répondre: Pourquoi d'autres sessions connectées à template1?
La différence entre template0 et template1
Au moment de l'initialisation d'un cluster de base de données, template0 et template1 sont les mêmes. Aucun emplacement spécifique des choses que vous souhaitez rendre disponibles pour chaque base de données que vous créez à l'aide de
CREATE DATABASE
devrait aller dans template1. Ainsi, par exemple, si vous ajoutez la langue de procédure PL/python pour template1, chaque base de données que vous créez plus tard comprendra PL/python.La base de données template0 est destiné à être une "vierge" de modèle. Il doit contenir uniquement des objets de base de données--celles créées par l'initialisation du cluster. Comme une "vierge" de modèle, il ne doit jamais être modifiée. Jamais.
Si vous avez besoin de spécifier le codage et les paramètres régionaux (classement), alors vous pouvez le faire en copiant template0. Vous ne pouvez pas le faire en copiant template1.
Oui, j'ai eu pgAdmin ouvert et a été l'obtention de cette erreur d'exécution de Django tests unitaires. J'ai pensé que peut-être il y avait une session ouverte sur le navigateur web. J'ai fermé tous les onglets du navigateur pour le serveur, et a eu recours à l'arrêt de la Apache2 service. Il était encore générer l'erreur. J'ai fermé pgAdmin et il a fonctionné très bien! LOL. Merci.
OriginalL'auteur Mike Sherrill 'Cat Recall'
Suffit de redémarrer le service de base de données.
OriginalL'auteur Ajay Takur
Ce problème se produit lorsque vous vous êtes connecté(psql template1 ou psql template0) dans template1 et template0 base de données et de sortie à l'aide de commande ci-dessous.
Ctrl + z
Existe pas de meilleure façon de db utiliser en dessous de postgres commande puis le problème ne va pas créer:
\q + entrée
Il y a 2 solutions, Si vous avez problème.
Solution - 1
Redémarrer posgres service comme.
sudo service postgresql restart
Solution - 2
sudo ps aux | grep template1
Assurez-vous de ne pas supprimer ce processus
postgres 8363 0.0 0.0 111760 7832 pts/11 T 09:49 0:00 /usr/lib/postgresql/9.5/bin/psql template1
ankit 18119 0.0 0.0 14224 976 pts/14 S+ 12:33 0:00 grep --color=auto template1
reste de processus devrait être tuer à l'aide de commande ci-dessous.
sudo kill -9
Maintenant, essayez de créer db à nouveau.
Espère que cela vous aidera.
Ankit H Gandhi.
OriginalL'auteur Er.Ankit H Gandhi
J'ai aussi eu ce message d'erreur lors de la réinitialisation de la base de données alors que j'avais l'défaut Ruby on Rails serveur WEBrick en cours d'exécution:
L'autre utilisateur ici était le fait de courir application Rails. Après l'arrêt du serveur avec CTRL + c, j'ai été en mesure de ré-exécuter la commande de réinitialisation de la base de données sans aucun problème.
Il est logique aussi. Vous ne pouvez pas supprimer la base de données si quelqu'un d'autre est connecté, comme Mike Sherrill souligne également.
OriginalL'auteur
J'ai redémarré mon système et l'erreur est toujours à l'affiche. Cependant, j'ai suivi les étapes ci-dessous pour faire le tri.
Arrêtez tous les processus à l'aide de la postgres le port 5432 en faisant cela, à l'invite de commande (Admin): Type
netstat -ano
dans l'invite de commande. Trouver le pid avec l'Adresse Locale de0.0.0.0:5432
. Ensuite, utiliseztaskkill /pid {pid} /f
tuer à la tâche.Démarrer le service postgres dans les services windows.
OriginalL'auteur Ifesinachi Bryan
Pour moi, la Solution a été de supprimer l'ancien serveur et créer un nouveau à partir de Postgresql interface web de gestion. Peut maintenant créer une nouvelle base de données sans cette erreur.
OriginalL'auteur Adamou BELLO