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.