J'essaie d'utiliser PostgreSQL pour pouvoir me déployer sur Heroku. Cependant, je ne peux plus exécuter localhost, pourquoi? Je reçois le message suivant:
PG::ConnectionBad
FATAL: role "Myname" does not exist
Voici mon 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
Voici mon 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
Il semble que pg ait besoin de moi pour créer un utilisateur ou une base de données, mais je suis incapable de savoir ou comment. Impossible de trouver des commandes qui ont fonctionné pour moi (je suis sur un windows btw)
Que puis-je faire?
Je devais aller dans mon tableau de bord d'administrateur PG et créer un db/utilisateur là-bas. Malheureusement, il se trouvait dans un sous-répertoire différent de celui indiqué dans les didacticiels en ligne (la dernière mise à jour de la destination du répertoire a probablement été mise à jour). Heureusement, j'ai pu le trouver et y créer la table/l'utilisateur, mettre à jour mon fichier database.yml, puis mon application a pu fonctionner!
L'erreur est "Le rôle" Mon nom "n'existe pas",
créer l'utilisateur "Myname" pour Postgresql
Sudo -u postgres createuser --superuser Myname
cela résoudra ce problème.
Ce qui a fonctionné pour moi était: 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.
Si vous installez Postgresql avec homebrew sur OSX, il n'y a pas d'utilisateur postgres
par défaut et vous ne pourrez pas utiliser psql
directement sans configurer un utilisateur au préalable.
Vous devez créer une username
et password
pour votre Postgresql
Essayez de créer un utilisateur avec un mot de passe dans psql
CREATE USER Myname WITH PASSWORD 'your_password';
Et vous devriez les ajouter à votre database.yml
comme
username: Myname
password: your_password
@ user3408293
Après l'installation, créez un utilisateur pour postgresql
Sudo -u postgres createuser --superuser $ USER
Sudo -u postgres createuser pgs_root
Définir le mot de passe de l'utilisateur postgresql
Sudo -u postgres psql postgres
(Pour l'invite psql) postgres = #\motdepasse pour ex.- postgres = #\motdepasse pgs_root
N.B Vous devez également ajouter un nom d'utilisateur et un mot de passe à différents environnements dans le fichier database.yml.
Vous pouvez également consulter ce lien: Rails: Erreur lors de l’installation de pg gem
Sur Windows, je pense que c'est un peu plus facile.
Installez postgresql et PGAdmin pour votre système. Voir this
Créez un utilisateur nommé postgres et donnez-lui un mot de passe. Vous serez bien invité à le faire.
Ensuite, lorsque vous souhaitez créer des bases de données , cliquez avec le bouton droit de la souris sur votre connexion et choisissez Nouvelle base de données. Les noms de ces bases de données doivent correspondre à ce qui est écrit dans votre database.yml
Exécutez rake db:migrate Rails_ENV=development
(développement | test | production).
Ces étapes ont fonctionné pour moi.