Files
Lauri Ojansivu fea58e1312 Document which databases WeKan supports, and how each is tested.
docs/Databases/Supported.md is the one list: FerretDB v1 with SQLite (the
default everywhere), PostgreSQL (works), MySQL, MariaDB and SAP HANA
(experimental), FerretDB 2 (not tested), and MongoDB 6, 7, 8 and 9 - with
what checks each: the 110-query conformance catalogue answers the same on
all of them, and WeKan's own tests run on Meteor's bundled MongoDB 8 and on
FerretDB. It also says what to know about MongoDB versions: the Linux
kernel 6.19-7.0.13 refusal and its fixes, AVX, the driver, and upgrades.

The README and the Status section of CHANGELOG.md gain a Databases list,
docs/Databases/README.md links the page, the Meteor 2.14 compatibility guide
is marked historical, and the conformance page counts 110 cases and the
MongoDB backends. CLAUDE.md and AGENTS.md describe the new Status block.

Thanks to xet7 !
2026-10-10 19:07:14 +03:00

3.7 KiB
Raw Permalink Blame History

Supported databases

WeKan stores its data in a MongoDB-compatible database. Which ones work, and how each was checked:

Database Status How it is checked
FerretDB v1 + SQLite Default on every platform: bundle, Docker, Snap, Kubernetes Conformance catalogue; WeKan with a real Meteor 3 client (#6509)
FerretDB v1 + PostgreSQL Works Conformance catalogue; WeKan with a real Meteor 3 client (#6509)
FerretDB v1 + MySQL Experimental Conformance catalogue
FerretDB v1 + MariaDB Experimental Conformance catalogue
FerretDB v1 + SAP HANA Experimental, amd64 only Conformance catalogue only when asked (WEKAN_CONFORMANCE_HANA=1)
FerretDB 2 + PostgreSQL/DocumentDB Not tested —
MongoDB 9 Works for the queries WeKan makes Conformance catalogue (9.0.2)
MongoDB 8 Works Conformance catalogue (8.0.32); WeKan's Mocha tests and dev server run on Meteor's bundled MongoDB 8.0.29
MongoDB 7 Works Conformance catalogue (7.0.43); docker-compose-mongodb-v7.yml runs WeKan on it
MongoDB 6 Works for the queries WeKan makes Conformance catalogue (6.0.28)
MongoDB 3.x – 5.x Not tested with current WeKan Use only to dump an old database, then restore it into a supported one

FerretDB v1 is wekan/FerretDB, the fork WeKan ships. A Snap that still has MongoDB data reads it with MongoDB and migrates itself to FerretDB.

The conformance catalogue

releases/db-conformance.sh runs one catalogue of 110 queries - operators, projection, sorting, paging, counting, aggregation, updates, indexes, capped collections - against every database above that has an image for the machine's CPU, and fails when any of them answers differently. EVERYTHING in build.sh and build.bat runs it. MongoDB 6, 7, 8 and 9 are queried directly, with no FerretDB in between, so a fault that every FerretDB backend shares still shows up as a difference: the first run with MongoDB found three such faults in FerretDB's $group, $min/$max and capped collections, fixed in wekan/FerretDB.

The run of 2026-10-10: SQLite, PostgreSQL, MySQL and MariaDB through FerretDB, and MongoDB 6.0.28, 7.0.43, 8.0.32 and 9.0.2, answered all 110 cases the same. See FerretDB/1/Conformance.md for how it works.

The catalogue checks the database queries WeKan depends on. The whole WeKan application - its browser tests - runs on Meteor's bundled MongoDB 8 and on FerretDB, not on every MongoDB version.

Things to know about MongoDB versions

  • Linux kernel 6.19 to 7.0.13. MongoDB refuses to start on these kernels ("Linux kernel versions 6.19 and newer has a known incompatibility"), Ubuntu 26.04's 7.0.0-N kernels included. MongoDB 8.0.35 and 9.0.4 recognise Ubuntu kernels that have the fix (SERVER-131779); otherwise upgrade to kernel 7.0.14 or later, or use FerretDB, which is not affected. The conformance run records such a machine as a skip with the reason.
  • AVX. MongoDB 5 and newer need a CPU with AVX; see avx-qemu.md and raspi4-qemu.md.
  • Driver. Meteor 3.6 connects with its bundled Node.js MongoDB driver 6.16 (npm-mongo); see Driver-System.md.
  • Upgrading MongoDB. MongoDB 9.0 upgrades only from 8.0 or 8.3, one major version at a time; take a mongodump first.