Download Latest Version OpenConstructionERP_12.2.0_x64_en-US.msi (375.0 MB)
Email in envelope

Get an email when there's a new version of OpenConstructionERP

Home / v4.4.1
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-05-22 3.1 kB
v4.4.1 -- fresh-install hotfix (#154) source code.tar.gz 2026-05-22 249.2 MB
v4.4.1 -- fresh-install hotfix (#154) source code.zip 2026-05-22 251.9 MB
Totals: 3 Items   501.1 MB 0

Hotfix above v4.4.0 — fixes GitHub issue [#154] (fresh community installs aborting with database is locked).

If you're a new user hitting (sqlite3.OperationalError) database is locked during alternative-3 install — this release fixes that. Upgrade with:

:::bash
pip install --upgrade openconstructionerp==4.4.1
# wipe the locked DB so the fixed seed can run cleanly:
rm -rf <data_dir>/openestimate.db
openconstructionerp

What broke (issue [#154])

Two bugs collided on every fresh install since v4.3.x:

  1. Schema/snapshot driftSafetyIncident.osha_recordable was added as a NOT NULL boolean with only a Python-side default=False. The committed showcase_snapshot.json.gz predates that column, so the seed loader's INSERT INTO oe_safety_incident (...) left it unsupplied. SQLite saw NOT NULL with no DEFAULT and tripped NOT NULL constraint failed on the very first incident insert.

  2. Leaked write lockseed_showcase_from_snapshot caught the IntegrityError and returned without con.rollback() / con.close(). SQLite's implicit transaction stayed open and the connection stayed alive, write-locking the file. Every subsequent boot step (demo account creation, admin reset, the next install retry) then cascaded as database is locked.

What changed in v4.4.1

  • SafetyIncident.osha_recordable now has server_default="0" so fresh create_all emits the column with DEFAULT '0'. The snapshot insert now succeeds even without supplying the column.
  • seed_showcase_snapshot.py has:
  • per-table IntegrityError catch that rolls back + skips just that table (defense in depth)
  • outer except that rolls back the connection
  • finally that always closes the connection The SQLite write lock can no longer leak on a partial failure — same class of bug recurring on another column will no longer brick the install.
  • geo_hub Cesium viewer dev assets — the Vite dev server now serves /cesium/* from node_modules/cesium/Build/Cesium instead of falling back to the SPA index, and ESM interop is forced via optimizeDeps.include: ['cesium']. Globe now renders correctly in npm run dev.
  • alembic v3103 drop_constraint is now wrapped in batch_alter_table so the v4.4.0 PropDev migration runs on SQLite (drop_constraint(type_="unique") is unsupported in SQLite outside batch mode).

Verification

Smoke tested locally on a fresh in-memory DB:

  • 7 projects + 113 tables + 10824 rows seeded cleanly
  • 7 safety incidents loaded
  • Post-seed write succeeded (no lock)
  • Boot completes past Application started successfully

Install

:::bash
pip install openconstructionerp==4.4.1
openconstructionerp

PyPI: https://pypi.org/project/openconstructionerp/4.4.1/

Upgrade from v4.4.0

:::bash
pip install --upgrade openconstructionerp==4.4.1
# if your install is healthy, no DB action needed
# if you're stuck on database is locked, wipe and re-seed:
rm -rf <data_dir>/openestimate.db
openconstructionerp

Reported by @jyloveqq — thanks for the precise screenshot.

Source: README.md, updated 2026-05-22