Open
Description
# /lib/project/repo.ex
defmodule Project.Repo do
use Ecto.Repo,
otp_app: :project,
adapter: Ecto.Adapters.SQLite3
end
# /priv/repo/migrations/1234_create_items.exs
defmodule Project.Repo.Migrations.CreateItems do
use Ecto.Migration
def change do
create table(:items) do
end
end
end
# config/runtime.exs
config :project, Project.Repo, database: "tmp/project.db"
$ mix ecto.drop; mix ecto.create; mix ecto.migrate
The database for Project.Repo has been dropped
The database for Project.Repo has been created
10:50:36.792 [info] == Running 1234 Project.Repo.Migrations.CreateItems.change/0 forward
10:50:36.795 [info] create table items
10:50:36.795 [info] == Migrated 1234 in 0.0s
✅
$ mix ecto.drop; mix ecto.create; mix ecto.migrate
✅ [success again]
$ mix ecto.drop; mix ecto.create; mix ecto.migrate
The database for Project.Repo has been dropped
The database for Project.Repo has been created
❌ 10:50:39.983 [error] Exqlite.Connection (#PID<0.176.0>) failed to connect: ** (Exqlite.Error) database is locked
10:50:40.006 [info] == Running 1234 Project.Repo.Migrations.CreateItems.change/0 forward
10:50:40.008 [info] create table items
10:50:40.009 [info] == Migrated 1234 in 0.0s
$ mix ecto.drop; mix ecto.create; mix ecto.migrate
❌ [error again]
$ mix ecto.drop; mix ecto.create; mix ecto.migrate
✅ [success again]
This is running locally (no virtualization, no remote filesystem) on MacOS. Why does Exqlite sometimes error when drop/create/migrate
is run in quick succession? It looks like ecto.create
may be holding a write lock despite appearing to exit?
Metadata
Metadata
Assignees
Labels
No labels