pgiesin
Ecto :database Not Found
This should be a simple problem but I just can’t seem to figure it out. I have a standalone Elixir app that won’t find the database.
Dependencies
{:comeonin, "~> 5.1"},
{:postgrex, "~> 0.14.1"},
{:ecto_sql, "~> 3.0"},
Repo
defmodule AccountService.Repo do
use Ecto.Repo,
otp_app: :account_service,
adapter: Ecto.Adapters.Postgres
end
Config
config :account_service, AccountService.Repo,
database: "worksolvr",
username: "postgres",
password: "REDACTED",
hostname: "localhost"
When i attempt to run mix ecto.migrate I receive:
[error] GenServer #PID<0.202.0> terminating
** (RuntimeError) connect raised KeyError exception: key :database not found.The exception details are hidden, as they may contain sensitive data such as database credentials. You may set :show_sensitive_data_on_connection_error to true if you wish to see all of the details
(elixir) lib/keyword.ex:389: Keyword.fetch!/2
(postgrex) lib/postgrex/protocol.ex:90: Postgrex.Protocol.connect/1
(db_connection) lib/db_connection/connection.ex:66: DBConnection.Connection.connect/2
(connection) lib/connection.ex:622: Connection.enter_connect/5
(stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol
Thanks,
Peter
Most Liked Responses
schaary
I miss the line
...
config :account_service, ecto_repos: [AccountService.Repo]
...
in your config/config.ex file.
Sanjer
Ensure the below and give it a re-try.
STEP 1. Define the dependencies required, mix.exs
defp deps do
[
{:ecto_sql, "~> 3.1"},
{:postgrex, "~> 0.14.3"}
]
end
STEP 2. Get the dependencies defined above
mix deps.get
STEP 3. Configure the Repo the application
config :helloapp, ecto_repos: [HelloApp.Repo]
Note: the :helloapp must be match the app name defined in the application.ex file. In my case I have created the application using the below command
mix new hello app --app hello app --sup
STEP 4. Configure the the Repo itself defined above
config :helloapp, HelloApp.Repo,
host: "localhost",
port: "5432",
database: "helloappdb",
username: "postgres",
password: "postgres"
STEP 4. Define the HelloApp.Repo module in repo.ex file in /lib/{app name}
defmoudle HelloApp.Repo do
use Ecto.Repo,
otp_app: :helloapp,
adapter: Ecto.Adapters.Postgres
end
STEP 5. Now, lets create the database
mix ecto.create
The output should be as below.
Compiling 1 file (.ex)
Generated helloapp app
The database for HelloApp.Repo has already been created.
Hope it helps somebody.
dimitarvp
Are you sure your app’s atom name is :MyApp and not :myapp?
Can you also show your MyAppRepo.ex file?








