Ich versuche, PostgreSQL zu verwenden, um mich bei Heroku einsetzen zu können. Ich kann localhost jedoch nicht mehr ausführen, warum? Ich erhalte folgende Nachricht:
PG::ConnectionBad
FATAL: role "Myname" does not exist
Hier ist meine databse.yml
development:
adapter: postgresql
database: my_database_development
pool: 5
timeout: 5000
test:
adapter: postgresql
database: my_database_test
pool: 5
timeout: 5000
production:
adapter: postgresql
database: my_database_production
pool: 5
timeout: 5000
Hier ist mein Gemfile:
source 'https://rubygems.org'
# Bundle Edge Rails instead: gem 'Rails', github: 'Rails/rails'
gem 'Rails', '4.0.3'
# Use pg as the database for Active Record
gem 'pg'
# Use SCSS for stylesheets
gem 'sass-Rails', '~> 4.0.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-Rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :Ruby
# Use jquery as the JavaScript library
gem 'jquery-Rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/Rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/Rails/jbuilder
gem 'jbuilder', '~> 1.2'
group :doc do
# bundle exec rake doc:Rails generates the API under doc/api.
gem 'sdoc', require: false
end
# Use ActiveModel has_secure_password
# gem 'bcrypt-Ruby', '~> 3.1.2'
# Use Unicorn as the app server
# gem 'Unicorn'
# Use Capistrano for deployment
# gem 'capistrano', group: :development
# Use debugger
# gem 'debugger', group: [:development, :test]
gem 'Rails_12factor', group: :production
Es scheint, dass pg mich braucht, um einen Benutzer oder eine Datenbank zu erstellen, aber ich kann oder weiß nicht wie. Konnte keine Befehle finden, die für mich funktionierten (ich bin auf einem Windows-Fenster übrigens)
Was kann ich machen?
Ich musste in mein PG-Admin-Dashboard gehen und dort eine Datenbank/einen Benutzer anlegen. Glücklicherweise befand es sich in einem Unterverzeichnis, das sich von den Online-Tutorials unterschied (wahrscheinlich aktualisiertes Verzeichnisziel zuletzt aktualisiert). Glücklicherweise konnte ich die Tabelle/den Benutzer dort finden, meine database.yml-Datei aktualisieren und dann konnte meine App funktionieren!
Der Fehler ist "Rolle" Myname "existiert nicht",
erstellen Sie den Benutzer "Myname" für Postgresql
Sudo -u postgres createuser --superuser Myname
es wird dieses Problem lösen.
Was für mich funktionierte, war: createuser -P -d -e Myname
.
-P If given, createuser will issue a Prompt for the password of the new user.
This is not necessary if you do not plan on using password authentication.
-d The new user will be allowed to create databases.
-e Echo the commands that createuser generates and sends to the server.
Wenn Sie Postgresql mit Homebrew unter OSX installieren, gibt es keinen Standardbenutzer postgres
, und Sie können psql
nicht direkt verwenden, ohne zuvor einen Benutzer eingerichtet zu haben.
Sie sollten eine username
und password
für Ihre Postgresql
erstellen.
Erstellen Sie einen Benutzer mit einem Kennwort in psql
.
CREATE USER Myname WITH PASSWORD 'your_password';
Und Sie sollten diese zu Ihrem database.yml
hinzufügen
username: Myname
password: your_password
@ user3408293
Nach der Installation erstellen Sie einen Benutzer für postgresql
Sudo -u postgres createuser --superuser $ USER
Sudo -u postgres createuser pgs_root
Legen Sie das Benutzerpasswort für den postgresql-Benutzer fest
Sudo -u postgres psql postgres
(Für psql-Eingabeaufforderung) postgres = #\passsword für ex.- postgres = #\passsword pgs_root
NB: Sie sollten auch den Benutzernamen und das Passwort zu verschiedenen Umgebungen in der Datei database.yml hinzufügen.
Sie können diesen Link auch weiterempfehlen: Rails: Fehler beim Installieren von pg gem
Unter Windows glaube ich, dass es etwas einfacher ist.
Installieren Sie postgresql und PGAdmin für Ihr System. this
Erstellen Sie einen Benutzer mit dem Namen postgres und geben Sie ihm ein Kennwort. Sie werden nett dazu aufgefordert.
Wenn Sie dann Datenbanken erstellen möchten , klicken Sie einfach mit der rechten Maustaste auf Ihre Verbindung und wählen Sie Neue Datenbank. Die Namen dieser Datenbanken sollten dem entsprechen, was in Ihrem database.yml
geschrieben steht.
Führen Sie rake db:migrate Rails_ENV=development
(Entwicklung | test | Produktion) aus.
Diese Schritte haben für mich funktioniert.