Skip to main content

Database Compatibility Matrix

Supported relational databases and the Framework M features available on each.


0. Supported Databases​

Framework M's standard SQL adapter supports the following relational databases:

DatabaseDriverTest Status
SQLiteaiosqlite✅ CI
PostgreSQLasyncpg✅ CI
MySQLaiomysql✅ CI
MariaDBaiomysql✅ CI
Oracleoracledb✅ CI
Microsoft SQL Serveraioodbc + ODBC Driver 18✅ CI

These are validated by the shared integration test suite on every merge request and default-branch commit.


1. Feature Matrix​

FeatureSQLitePostgreSQLMySQLMariaDBOracleMSSQL
DocType CRUD✅✅✅✅✅✅
Unique constraints✅✅✅✅✅✅
Child tables✅✅✅✅✅✅
Link fields / fetch_from✅✅✅✅✅✅
Filtering (all operators)✅✅✅✅✅✅
Ordering✅✅✅✅✅✅
Pagination (limit/offset)✅✅✅✅✅✅
Optimistic concurrency✅✅✅✅✅✅
Exists / Count✅✅✅✅✅✅
JSON fields✅✅✅✅✅✅
UUID primary keys✅✅✅✅✅✅
Soft delete✅✅✅✅✅✅
Version history✅✅✅✅✅✅
Full-text search❌❌❌❌❌❌
Array columns❌❌❌❌❌❌
Geospatial types❌❌❌❌❌❌
Legend
  • ✅ Supported and covered by CI.
  • ❌ Not supported by the standard SQL adapter.

2. Known Dialect Quirks​

These differences are handled automatically by the framework, but they are worth knowing when debugging or writing portable logic.

QuirkDatabases AffectedFramework Handling
Empty string equals NULLOraclePersisted as NULL; retrieved as None.
Unbounded strings in unique indexesMSSQLMapped to VARCHAR(255) by default.
OFFSET/LIMIT requires ORDER BYMSSQLDefault ordering by creation DESC, id ASC is applied.
UUID column typeMSSQLMapped to UNIQUEIDENTIFIER.
UUID column typeMySQL / MariaDBMapped to CHAR(36).
JSON column typeOracleMapped to OracleJSON.
Case-insensitive string comparisonMySQL (default collation)Filter behavior may differ from PostgreSQL.
NULL ordering in ORDER BY ... ASCMySQL / MariaDBNULLs sort first by default; other databases sort them last.
BOOLEAN typeMySQL / MariaDB / Oracle / MSSQLMapped to dialect-appropriate boolean or integer type.

3. Choosing a Database​

Use CaseRecommended Database
Local development / testsSQLite
Default productionPostgreSQL
Existing MySQL/MariaDB fleetMySQL or MariaDB
Enterprise Oracle environmentOracle
Existing Microsoft stackMSSQL

4. Non-Relational and Hybrid Data​

For databases not listed above, use the MX Adapter Extension Pattern. This allows you to implement a custom repository adapter for document stores, graph databases, or external APIs while keeping the same DocType and controller layers.

See Build a Hybrid Database Adapter.