PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ich erhalte einen pg-Fehler, wenn ich versuche, einen Controller zu zerstören

Ein Freund von mir hatte das gleiche Problem bei der Verwendung von Ruby 2.0 unter Windows 7 mit Postgres. Es tritt nicht nur auf, wenn versucht wird, einen Controller zu zerstören, sondern bei jeder Datenbankaktion (einschließlich rake db:create). Das Problem ist, dass die Datei pg_ext.so für Ruby 2.0 nicht enthalten ist. Es ist für 1.9 enthalten, aber es scheint nicht zu funktionieren, es einfach auf 2.0 zu kopieren. Ich habe jedoch eine andere Methode gefunden, um die korrekte pg_ext.so zu erhalten. Nicht ganz sicher, warum das funktioniert, aber es funktioniert für ihn. Folgendes müssen Sie tun:

  1. Gehen Sie in den Ordner, in dem sich 2.0/pg_ext.so (die Datei, die nicht gefunden werden konnte) befinden sollte. In Ihrem Fall C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1-x86-mingw32/lib/.
  2. Erstellen Sie hier einen Ordner namens '2.0' (ohne Anführungszeichen).
  3. In diesem Ordner benötigen Sie die richtige Datei pg_ext.so. Diesen erhalten Sie auf folgende Weise:
  4. Installieren Sie das pg-Gem manuell ("gem install pg" in der Konsole). Dadurch wird die Nicht-x86-mingw32-Version des Gems installiert. Es behebt das Problem nicht, aber es erstellt die richtige pg_ext.so. Ich denke, das liegt daran, dass es das pg-Gem für Ihr System kompiliert, also für Ruby 2.0. Sie können diese pg_ext.so-Datei dann mit der pg x86-mingw32-Version verwenden. Sie benötigen DevKit, um pg zu kompilieren und zu installieren (http://rubyinstaller.org/add- ons/devkit/ ).
  5. Gehen Sie zum Speicherort von pg_ext.so im Gem-Ordner pg-0.14.1. In Ihrem Fall wäre dies C:/Users/rrw/.pik/rubies/Ruby-200-p0/lib/ruby/gems/2.0.0/gems/pg-0.14.1/lib.
  6. Kopieren Sie die Datei pg_ext.so aus diesem Ordner in den neu erstellten Ordner pg-0.14.1-x86-mingw32/lib/2.0/ in Schritt 2.
  7. Versuchen Sie jetzt Ihre Befehle erneut und prüfen Sie, ob alles funktioniert. Wenn dies nicht der Fall ist, löschen Sie Ihre Gemfile.lock und führen Sie die Bundle-Installation erneut aus.
  8. Dasselbe Problem mit diesem Gem kann auch bei anderen mingw32-Gems auftreten. Ich hatte zum Beispiel das gleiche Problem mit dem Bcrypt-Rails-Gem. Befolgen Sie die gleichen Schritte wie oben beschrieben, um das Problem zu beheben. Ich verwende Ruby 2.0 jetzt erfolgreich unter Windows 7.

PS. Wenn Sie andere Probleme beim Ausführen des pg-Gems unter Windows 7 64-Bit haben, versuchen Sie, die 32-Bit-x86-Version von Ruby (RubyInstaller) und postgresql zu installieren. Stellen Sie außerdem sicher, dass Sie die Ruby-Ordner in Ihren Pfad aufnehmen (dies ist eine Option bei der Installation von Ruby 2.0 mit dem RubyInstaller) sowie die Postgresql-Ordner lib und bin.

Viel Glück!