Database FAQ
This page is for database administrators who want a quick answer before they read a full page. Each answer links to the page with the details.
Contents
- Choosing and installing
- Accounts and security
- Running the database
- Upgrades and moves
- Scaling
- Engine-specific questions
Choosing and installing
Which databases are supported? Six, in this order of preference: SQLite 3 (the default), PostgreSQL, MongoDB, MariaDB, Oracle, MySQL. Microsoft SQL Server is known to be possible with additional work (Supported engines and versions).
Is SQLite really fit for production? For a site served from one machine, yes: the driver adds WAL, connection settings for a web server and a write queue, and caches answer most page views. Choose a server engine for several web servers, heavy concurrent publishing, replication or database grants (Choosing an engine).
Which minimum versions? SQLite library 3.33, PostgreSQL 13, MongoDB 6.0 with PHP 8.2, Oracle 19c; MySQL and
MariaDB a release your vendor supports, with InnoDB and utf8mb4 (Versions).
Does the installer create the database and the user? No. Create them first; the installers create the tables (Setting up PostgreSQL, MySQL and MariaDB).
Accounts and security
Which privileges does the site need? Full rights on its own database and nothing else; on MySQL the list in Database accounts and privileges, on PostgreSQL ownership of the database.
Can the site run without DDL rights? The project does not document or test that split; the same account applies the update files. Test it on staging if your policy requires it.
Where is the database password? In settings/override/site.ini.append.php. Keep it out of version control,
mode 640 (Securing the database).
Does the administration show the password? No. Secrets are masked everywhere, and the database user is always hidden in the System information report.
Running the database
How do I back it up? With the engine's tool: .backup for SQLite, pg_dump, mysqldump --single-transaction,
mongodump, Data Pump. Plus var/storage and settings/override (Backups per engine).
Can I copy the SQLite file? Not while it is in use. Use .backup or VACUUM INTO.
May I change data with SQL by hand? Avoid it; use the administration or the scripts. If you must, clear the caches afterwards, the SQL query cache included (The SQL query cache).
Which cronjobs touch the database? The default part, frequent and infrequent; session_gc.php is not in any
shipped part (Housekeeping).
Are sessions in the database? Only with [Session] Handler=ezpSessionHandlerDB
(Sessions in the database).
Upgrades and moves
Which version is my database at? SELECT name, value FROM ezsite_data WHERE name LIKE 'ezpublish-%';
(Upgrades).
Which update files do I apply? Those of your engine and your path, in order, each once; never 6.12/, 7.2/,
7.3/ or unstable/ (Upgrades and the SQL update files).
How do I check the schema afterwards? Setup > Upgrade check, "Check database consistency", or ezsqldiff.php
(Checking the schema).
Can I move from MySQL to PostgreSQL? Yes, through a .dba dump and insert in a maintenance window
(Moving a site to another engine).
Scaling
Does Exponential support read replicas? On MySQL and MariaDB, with UseSlaveServer; on the other engines
replication is the server's own (Read replicas).
Can several web servers share one database? Yes, on every engine except SQLite; files are then shared with the DFS cluster (Clustering).
How do I find slow queries? SQLOutput and SlowQueriesOutput in the debug output for your address, the SQL
profiler, and your engine's slow query log (Finding slow queries).
Should I turn on the query cache? Try request, then shared, and measure; remember to clear it after writes
outside Exponential (The SQL query cache).
Engine-specific questions
Why are emoji lost on MySQL? The connection uses utf8, which is three-byte utf8mb3
(utf8mb4).
Why does PostgreSQL need pgcrypto? The driver computes MD5 with digest() (Setting up PostgreSQL).
What does MongoDB not support? Some features, listed on MongoDB: limits and operations;
untranslated SQL returns empty results and logs MONGO TODO.
Is Oracle supported out of the box? Through the ezoracle extension, present in every installation and activated
for Oracle sites, from 6.0.15 on (Setting up Oracle).
Can I use Microsoft SQL Server? Not in 6.0.x (Microsoft SQL Server: status).
Related pages
- Database administrators: start here
- Glossary for database administrators
- Troubleshooting database errors
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.