iamwil

iamwil

How to connect to user-specified DB config using Ecto?

Hi all,

I’m a bit new to Ecto and Elixir. I got a question about connecting to a database.

I have a Phoenix project where I want to allow my user to connect to a database of their choosing. However, I’m not sure how to use Ecto to connect to the DB, unless it’s set in the configuration of the project and run when the server is started up.

When I have a second repo module

defmodule MyApp.SecondRepo do
  use Ecto.Repo, otp_app: :myapp
end

Elixir complains that it doesn’t have the right config to initialize this module. Can anyone point me to how to connect to a user-specified database after the Phoenix server has already been started up? Thanks.

Wil

Most Liked

michalmuskala

michalmuskala

There are some configuration values that are required at compile-time. This is primarily the adapter - ecto inlines some functions in the repo, based on the adapter, in order to speed-up dome hot paths.

Most of the other configuration values can be passed to the repo’s start_link function (or as options in the supervisor).

There’s a list of compile-time options and runtime options in the documentation: https://hexdocs.pm/ecto/Ecto.Adapters.Postgres.html

NobbZ

NobbZ

Ecto does not allow dynamic configuration of the DB at runtime. Your only option is to directly use the DB-Adapter to go through connection and query.

Thats at least what I understand when reading github issue #1183

hubertlepicki

hubertlepicki

Can you tell us a bit more broadly what your end result should be? I mean, I suspect you may want to do multi-tenancy by connecting to multiple databases? If this is the case then Ecto has sort of different approach, by using namespaces/prefixes rather than connecting to multiple databases.

Last Post!

joefractal

joefractal

perfect, thanks

Where Next?

Popular in Questions Top

hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement