InnoDB

The MySQL and MariaDB storage engine that Drupal requires as its primary engine; it adds transactions, row-level locking and foreign key checks.

Learn DrupalDrupal glossary

InnoDB is a storage engine for MySQL and MariaDB: the component that stores a table's rows on disk and decides how queries read and lock them. Drupal on MySQL or MariaDB depends on it. Drupal.org lists InnoDB as the required primary storage engine, and the core MySQL driver creates tables with it.

How InnoDB fits Drupal 11

The MySQL manual describes InnoDB as a general-purpose engine whose changes follow the ACID model, with commit, rollback and crash recovery. The manual says row-level locking and consistent reads increase multi-user concurrency, and that InnoDB supports FOREIGN KEY constraints. In MySQL 8.4 it is the default engine, and the MariaDB knowledge base calls it the default for MariaDB Server.

Drupal does not rely on the server default. The MySQL driver's Schema class builds each CREATE TABLE statement with ENGINE = InnoDB and the utf8mb4 character set, unless a table definition sets its own mysql_engine. During installation, the driver's installer tasks fail with the message that the MyISAM storage engine is not supported when MyISAM is the default engine and InnoDB is not listed.

The MySQL driver also checks how transactions are isolated. Core reads the session isolation level and reports it on the Status report as "Transaction isolation level". REPEATABLE-READ gives a warning, any value other than READ-COMMITTED is an error, and the message names READ COMMITTED as the recommended level. READ-COMMITTED passes only when every table has a primary key; otherwise the entry is an error that lists the tables without one.

Example

To see which engines your database offers, run this in a MySQL client. Core's installer uses the same statement:

SHOW ENGINES;
        

Common mistakes

  • Ignoring the isolation warning on the Status report. A warning for REPEATABLE-READ is Drupal telling you its recommended level is different.
  • Assuming a Drupal site always uses InnoDB. A site on PostgreSQL or SQLite has no InnoDB tables at all.

For marketing and content teams

You will not touch the storage engine. It matters when you choose or change a host, or when a developer plans a migration. Ask the host to confirm that Drupal 11 runs on a supported MySQL or MariaDB version with InnoDB, and keep the answer with the rest of the site maintenance notes. The wider hosting stack is described under LAMP.

Sources

Questions about InnoDB

On MySQL or MariaDB, yes. Drupal.org's database requirements, checked on 2026-10-26, list InnoDB as the primary storage engine, together with MariaDB 10.6 or later or MySQL 8.0 or later for Drupal 11. The MySQL driver also creates new tables as InnoDB unless a table definition says otherwise.

Then InnoDB does not apply. It is an engine inside MySQL and MariaDB. Drupal core also ships drivers for PostgreSQL and SQLite, which handle storage in their own way.

The MySQL manual gives ALTER TABLE table_name ENGINE=InnoDB;. Make a backup first and check free disk space, because the manual warns that InnoDB tables need more space than MyISAM tables and that an ALTER TABLE that runs out of space rolls back, which can take hours when the disk is the bottleneck.

Related terms

All Drupal terms from A to Z