jordan0day

jordan0day

How to properly use Mariaex / DBConnection?

I have an application which I’m using Mariaex to query a MySQL db, but I’m not using Ecto. I’m curious what the proper way is to handle connection/instances of Mariaex for a long-running application? Under the hood, Mariaex uses DBConnection to create the connection and do all the connection pooling stuff, but I’m unsure if I’m supposed to just start one instance of Mariaex (via start_link) and hold on to that pid for the duration of the application (ultimately I’m sure I’d use a supervisor), or if I should be calling Mariaex.start_link/1 each time I want to perform a new query? If the latter, do I manually stop the pid returned by Mariaex.start_link/1 when the query has completed? Does DBConnection handle shutting it down?

I’ve looked through Mariaex, DBConnection, and Ecto’s codebases to try to understand how it’s handled in Ecto, but there’s a sufficient amount of abstraction and indirection that I haven’t really been able to tell how Ecto handles this.

I’d appreciate any advice anyone could provide on this.

** UPDATE **
Sorry, I guess I shouldn’t have posted this on a day when I was loaded up on cold medicine. I now see that I had forgotten to set the pool to DBConnection.Poolboy or DBConnection.Sojourn, (though in observer there was a DBConnection.Sojourn.Supervisor started, so I naively assumed sojourn was being used by default), and had confused myself about the connection behavior.

Most Liked

hubertlepicki

hubertlepicki

Hey, I had this blog post as draft for quite some time now, just published it for you:

is this helpful?

acrolink

acrolink

Absolutely, it was the very piece of code I was looking for :slight_smile: (I mean, using Supervisor and Poolboy). For my current little project, maximum 3 people would be interacting with the database at the same time, but I guess it is still better to set the connection up and let Poolboy handle the connections. Thank you.

jordan0day

jordan0day

It’s in the options you pass to Mariaex.start_link/1, Mariaex.query/4, and again in the options passed to Mariaex.transaction/3. See mariaex/lib/mariaex.ex at master · xerions/mariaex · GitHub

Hope this helps!

Where Next?

Popular in Questions Top

Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
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
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31013 112
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
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
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36352 110
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement