@@ -2315,3 +2315,76 @@ Changing templates
23152315
23162316See :ref: `custom-seed-migration-templates ` for how to customize the templates
23172317used to generate migrations.
2318+
2319+ Database-Specific Limitations
2320+ =============================
2321+
2322+ While Migrations aims to provide a database-agnostic API, some features have
2323+ database-specific limitations or are not available on all platforms.
2324+
2325+ SQL Server
2326+ ----------
2327+
2328+ The following features are not supported on SQL Server:
2329+
2330+ **Check Constraints **
2331+
2332+ Check constraints are not currently implemented for SQL Server. Attempting to
2333+ use ``addCheckConstraint() `` or ``dropCheckConstraint() `` will throw a
2334+ ``BadMethodCallException ``.
2335+
2336+ **Table Comments **
2337+
2338+ SQL Server does not support table comments. Attempting to use ``changeComment() ``
2339+ will throw a ``BadMethodCallException ``.
2340+
2341+ **INSERT IGNORE / insertOrSkip() **
2342+
2343+ SQL Server does not support the ``INSERT IGNORE `` syntax used by ``insertOrSkip() ``.
2344+ This method will throw a ``RuntimeException `` on SQL Server. Use ``insertOrUpdate() ``
2345+ instead for upsert operations, which uses ``MERGE `` statements on SQL Server.
2346+
2347+ SQLite
2348+ ------
2349+
2350+ **Foreign Key Names **
2351+
2352+ SQLite does not support named foreign keys. The foreign key constraint name option
2353+ is ignored when creating foreign keys on SQLite.
2354+
2355+ **Table Comments **
2356+
2357+ SQLite does not support table comments directly. Comments are stored as metadata
2358+ but not in the database itself.
2359+
2360+ **Check Constraint Modifications **
2361+
2362+ SQLite does not support ``ALTER TABLE `` operations for check constraints. Adding or
2363+ dropping check constraints requires recreating the entire table, which is handled
2364+ automatically by the adapter.
2365+
2366+ **Table Partitioning **
2367+
2368+ SQLite does not support table partitioning.
2369+
2370+ PostgreSQL
2371+ ----------
2372+
2373+ **KEY Partitioning **
2374+
2375+ PostgreSQL does not support MySQL's ``KEY `` partitioning type. Use ``HASH ``
2376+ partitioning instead for similar distribution behavior.
2377+
2378+ MySQL/MariaDB
2379+ -------------
2380+
2381+ **insertOrUpdate() Conflict Columns **
2382+
2383+ For MySQL, the ``$conflictColumns `` parameter in ``insertOrUpdate() `` is ignored
2384+ because MySQL's ``ON DUPLICATE KEY UPDATE `` automatically applies to all unique
2385+ constraints. PostgreSQL and SQLite require this parameter to be specified.
2386+
2387+ **MariaDB GIS/Geometry **
2388+
2389+ Some geometry column features may not work correctly on MariaDB due to differences
2390+ in GIS implementation compared to MySQL.
0 commit comments