Hi,
For the last 2 days, I’ve be trying to implement Triplex to add multi-tenancy to my application, and I use transactions a lot, usually with Ecto.Multi.
From the documentation it looks like with triplex I need to use:
Triplex.create_schema(slug, Project.Repo, fn(tenant, repo) ->
Repo.transaction(fn ->
mig = Triplex.migrate(tenant, repo)
IO.inspect(mig, label: "MIGRATE")
// Add any ecto operation here...
tenant
end)
end)
My problem is that Triplex.migrate(tenant, repo)
is always, always returning:
{:error,
"ERROR 42P01 (undefined_table) relation \"prj_c24.schema_migrations\" does not exist\n\n query: INSERT INTO \"prj_c24\".\"schema_migrations\" (\"version\",\"inserted_at\") VALUES ($1,$2)"}
For me this is an extreme confusing error. It tells nothing about what is happening, (at least for me).
My only migration is this:
defmodule Project.Repo.Migrations.CreateUsersTables do
use Ecto.Migration
def change do
# execute "CREATE EXTENSION IF NOT EXISTS citext", ""
create table(:users, primary_key: false) do
add(:id, :uuid, primary_key: true, null: false)
# add(:email, :citext, null: false)
add(:hashed_password, :string, null: false)
add(:first_name, :string, null: false)
add(:last_name, :string, null: false)
add(:is_enabled, :boolean, null: false, default: true)
add(:dob, :date)
add(:photo, :string, default: "/images/empty.png")
add(:confirmed_at, :naive_datetime)
timestamps()
end
# create unique_index(:users, [:email])
end
end
Any help on that error? thanks
PS: The prefix
is being created in the database. But migrations are not running.
❯ elixir --version
Erlang/OTP 24 [erts-12.1.5] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit] [dtrace]
Elixir 1.13.0 (compiled with Erlang/OTP 24)
{:triplex, "~> 1.3.0-rc.1"}