erix

erix

** (RuntimeError) could not lookup Ecto repo MySQL because it was not started or it does not exist

I realize there are multiple topics with the same title, but the questions and answers in those threads either don’t make sense to me or are not addressing my elephant.

I have followed the instructions on Elixir School: Ecto Basics and I am stuck.

I created a new mix mix new cc. It did not generate an application.ex.

I then set up a repository by running:

$ mix ecto.gen.repo -r Cc.MySQL
* creating lib/cc
* creating lib/cc/my_sql.ex
* creating config/config.exs
Don't forget to add your new repo to your supervision tree
(typically in lib/cc/application.ex):
  • I edited config.exs to add config :cc, ecto_repos: [Cc.MySQL], correct the MySQL creds and add protocol: :tcp:
    import Config
config :cc, Cc.MySQL,
  database: "ecto",
  username: "ecto",
  password: "ecto",
  hostname: "localhost",
  protocol: :tcp

config :cc, ecto_repos: [Cc.MySQL]
  • I edited my_sql.ex to use MyXQL instead of the generated Postgres.
defmodule Cc.MySQL do
  use Ecto.Repo,
    otp_app: :cc,
    adapter: Ecto.Adapters.MyXQL
end

According to the Ecto documentation, I need an application.ex. So I created one in lib/cc/application.ex:

defmodule Cc.Application do
  use Application

  def start(_type, _args) do
    children = [
      Cc.MySQL,
    ]

    opts = [strategy: :one_for_one, name: Cc.Supervisor]
    Supervisor.start_link(children, opts)
  end
end

after compiling the project and running, I use an existing Schema to try insert data:

$ iex -S mix
Compiling 1 file (.ex)
Interactive Elixir (1.16.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> cars = %CC.Cars.Model{agent: "localhost"}
%CC.Cars.Model{
  __meta__: #Ecto.Schema.Metadata<:built, "cars">,
  id: nil,
  date: nil,
  car: nil,
  agent: "localhost",
}
iex(2)> Cc.MySQL.insert!(cars)
** (RuntimeError) could not lookup Ecto repo Cc.MySQL because it was not started or it does not exist

However if I run {:ok, pid} = Cc.MySQL.start_link() in iex directly, I will get a PID. If I then run the command Cc.MySQL.insert!(cars) I will start getting MySQL errors instead.

What am I missing that with allow my app to generate a PID for Cc.MySQL?

Marked As Solved

LostKobrakai

LostKobrakai

Just creating application.ex doesn’t magically have the callbacks in that module be called. You also need to adjust mix.exs for that to happen.

You can run mix new --sup cc for it to create the mix.exs as needed and also have application.ex already be generated by the command.

Also Liked

LostKobrakai

LostKobrakai

Having figured out the difference between the two it doesn’t really matter.

Where Next?

Popular in Questions 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
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
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
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
mgjohns61585
Could someone help me? I’m making my first elixir program, number guessing game. I can’t figure out how to convert the user’s guess from ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
dotdotdotPaul
Okay, I’m having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I’m sure I’...
New

Other popular topics Top

malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
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
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54120 245
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
jaysoifer
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)? Would mix ecto.rollback -v 200809061...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement