1

it was answered many times but I am too dumb and need someone to explain me like Im 5 years old.

I get:

C:\Users\Jaiel\Desktop\Uebung_3_Elias_Kechter_s0555064_SoSe_2018_AI_Web_Entwicklung\order_management>rails db:migrate
rails aborted!
PG::ConnectionBad: fe_sendauth: no password supplied
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Im on Windows. Have a Rails 5 App, which works like a charm using sqlite3 as databse. But unfortnuately Heroku doesnt want me to have a worrking app and demands postgresql.

I dont know where to put my password.

This is my database.yml:

# PostgreSQL. Versions 9.1 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: order_management_development

  # The specified database role being used to connect to postgres.
  # To create additional roles in postgres see `$ createuser --help`.
  # When left blank, postgres will use the default role. This is
  # the same name as the operating system user that initialized the database.
  #username: order_management

  # The password associated with the postgres role (username).
  #password:

  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost

  # The TCP port the server listens on. Defaults to 5432.
  # If your server runs on a different port number, change accordingly.
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # Defaults to warning.
  #min_messages: notice

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: order_management_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: order_management_production
  username: order_management
  password: <%= ENV['ORDER_MANAGEMENT_DATABASE_PASSWORD'] %>

I just want it to work for 2 hours now I have been reading and still dont understand what I am doing wrong.

I have tried to paste "password: pass" (my password) under the development section

but still get:

PG::ConnectionBad: FATAL:  Passwort-Authentification failed for user Jaiel
Ilja KO
  • 1,272
  • 12
  • 26
  • if i understand well, you had your dbs configuration with sqlite then you changed for pg ? you want all your environments running with pg or just production ? – Sovalina May 09 '18 at 16:07
  • nope I made a new one with the ``--database:postgresql`` option – Ilja KO May 09 '18 at 16:38
  • Add username and password to development environment and create same user in postgre https://stackoverflow.com/questions/5189026/how-to-add-a-user-to-postgresql-in-windows. Then create database `rake db:create` Also make sure your pg gem is in your gemfile for all environments (but I think it is there already) – Maxence May 10 '18 at 00:03
  • yeah I resolved it you are right. There was no role called ``Jaiel`` shakingmyhead – Ilja KO May 11 '18 at 14:44

1 Answers1

-1

It seems like you want to run your application in Heroku, and it will running with production mode. So Rails will get database infomations from database.yml and the production seciton.

In which, your setting for the database is: production: <<: *default database: order_management_production username: order_management password: <%= ENV['ORDER_MANAGEMENT_DATABASE_PASSWORD'] %> it says that the password will get from the server environment with the name ORDER_MANAGEMENT_DATABASE_PASSWORD.

If you don't know how to set that and your application is not a real product, you can replace <%= ENV['ORDER_MANAGEMENT_DATABASE_PASSWORD'] %> with the real password like abc123.


update 1.

Also, I have noticed that you put adapter: postgresql setting in default section, and your development section is inherented from the default section, so the database adapter for you development database setting is postgresql but sqlite.

You should fix the problem or you will get database error in your localhost development.

And for more and greater explaining, you can read Ruby on Rails Tutorial (Rails 5).


Sorry for my poor english.

Dx.
  • 1
  • 2
  • no I am far away from running it on heroku. I am trying to run it locally in development environment. I provide my password but it just wont let me `Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"order_management_development", "password"=>"5"}` – Ilja KO May 09 '18 at 15:42
  • I changed password in pgadmin to 5 and did `password: 5` under `develoment` section it still fails authentification – Ilja KO May 09 '18 at 15:43
  • Sorry for the wrong answer. I updated the answer. Create and use database in localhost, the default choice is sqlite, but you set your adapter to `postgresql` for all the environments. So change it to `sqlite` or add a line in development section. – Dx. May 09 '18 at 15:51
  • Please read the book and write codes with the book, maybe you need to know more basics. – Dx. May 09 '18 at 15:53
  • what do you eman with "Also, I have noticed that you put adapter: postgresql setting in default section, and your development section is inherented from the default section, so the database adapter for you development database setting is postgresql but sqlite." – Ilja KO May 09 '18 at 17:19
  • I mean you set your default database adapter to postgresql with 'adapter: postgresql', this will let your application use postgresql as database in your localhost development, but you use sqlite instead. So add a line `adapter: sqlite3` in your developement section of database.yml file. – Dx. May 10 '18 at 03:36