Running mix test on a new fresh project throws Postgres connection error but runs fine running phx.server

I have a freshly created hello app I did the steps to configure the database and ran mix ecto.create everything went fine and smooth it connects fine to the db and successfully runs the server.

Now the real doubt that I have (since I’m a novice dev using phoenix) is that when I run mix test on the root of the project I notice it starts compiling files and doing kind of the same that it happens when you run phx.serverbut in this case it throws me an error saying that the connection with the user “posgres” failed

17:17:39.593 [error] GenServer #PID<0.285.0> terminating
** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
    (db_connection 2.4.2) lib/db_connection/connection.ex:100: DBConnection.Connection.connect/2
    (connection 1.1.0) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol

17:17:39.756 [error] GenServer #PID<0.293.0> terminating
** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
    (db_connection 2.4.2) lib/db_connection/connection.ex:100: DBConnection.Connection.connect/2
    (connection 1.1.0) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol
** (Mix) The database for Hello.Repo couldn't be created: killed
  • I’m running PosgreSQL 15 directly over windows 10 no docker container
  • Elixir 1.14.1 (compiled with Erlang/OTP 23)
  • Phoenix v1.6.15

I read other threads similar to my issue but is still making me noise that it runs fine when running the server but it fails when running mix test, am I missing something obvious?

Hi. The tests use a separate database to that used when running in dev mode. You’ll need to check, and update if necessary, the dev config file’s repo config, and arrange for whatever PostgreSQL user you set there to have create permission.

Hey David!, thanks for replying, You are right and also realized that a few mins ago reading another answer on stackoverflow :slight_smile: i edited the config/test.exs to have the right password and now I was able to run the tests on my hello app

Compiling 23 files (.ex)
Generated hello app
...................
Finished in 0.3 seconds (0.1s async, 0.2s sync)72: Mix.Tasks.Compile.All.compile/4
19 tests, 0 failuresix/tasks/compile.all.ex:59: Mix.Tasks.Compile.All.with_logger_app/2
  (mix 1.14.1) lib/mix/tasks/compile.all.ex:33: Mix.Tasks.Compile.All.run/1
Randomized with seed 860090

It is also new for me that for tests uses his own db, I will read in detail the docs for mix test on hexdocs and find more about how this works, thanks for the help really appreciatte it.

1 Like