Skip to content
In this guide

Guide · Other engines

MySQL, MariaDB and SQLite

Seqora connects to PostgreSQL, MySQL, MariaDB and SQLite. Most of the app does not care which. This page is about the parts that do.

The same on all four

You connect from the same dialog, browse the same explorer, and filter, sort and page the same grid. Cell edits, new rows and deletes are staged and reviewed the same way, and applied in one transaction. The SQL editor runs, cancels and formats on every engine, completes table and column names from the catalog, and has Begin, Commit and Rollback. History, saved queries, exports and Copy as… work everywhere. So do the ER diagram and its export, which are Free on all four, and design mode, which is Pro on all four.

Where they differ

Feature PostgreSQL MySQL and MariaDB SQLite
Plan tab Yes Yes, MySQL 8.0.18 or later EXPLAIN QUERY PLAN, estimates only
Analyze, with timings Reads automatically, writes by Analyze in rollback Reads only No
Test index and the work_mem retry Yes, Test uses hypopg No No
With and without this index Yes, with hypopg Partial Partial
Index, constraint, trigger, view, sequence and column pages Yes Yes Yes
Routines, partitions, access Yes, access includes row-level security Yes No
Types and extensions Yes No No
Column statistics in the inspector pg_stats MySQL 8 histograms, none on MariaDB None
JSON-path filters in the grid No No No

Plans from MySQL, MariaDB and SQLite are translated into PostgreSQL's node names, so a full scan reads Seq Scan on every engine. Raw plan JSON keeps each engine's own output, labelled with what produced it, such as EXPLAIN ANALYZE tree on MySQL or ANALYZE FORMAT=JSON on MariaDB.

MySQL and MariaDB

The editor refuses SET NAMES, other character set changes and RESET, because they would change how Seqora reads the connection: "Reconnect to start a fresh session." It also refuses executable comments such as /*! … */, a bare DELIMITER, and a stored program with a BEGIN … END body that isn't wrapped in DELIMITER $$ … $$. A SET sql_mode has to be the last statement of its script, because the statements after it would be read with the new mode. SET SESSION, SET @var, PREPARE and EXECUTE run, after the high-risk review.

After an error inside a transaction, the badge reads State unknown and Run, Begin and Commit stay disabled until Rollback or Refresh transaction settles it. MySQL's errors do not report the state of the transaction, and Seqora does not guess. A plain statement that fails in autocommit leaves the editor at Autocommit.

Statement timeout in Settings stops a statement at the deadline the way Cancel run does, with KILL QUERY, rather than through a session variable.

The Plan tab on MySQL needs 8.0.18 or later, the release that added EXPLAIN FORMAT=TREE and EXPLAIN ANALYZE. Writes are never analyzed on MySQL or MariaDB.

Design mode works, but MySQL commits every DDL statement on its own, and the review says so: "MySQL commits each schema statement on its own. If one fails while applying, the statements before it stay applied." The dry run cannot use a transaction either. It replays every statement on empty copies of the tables in a scratch database, then drops it. If the user cannot create that database, the review falls back to Only the syntax was checked and suggests granting CREATE on seqora_scratch_% databases.

Column facts on MySQL come from histograms, and a column without one says so, with the ANALYZE TABLE … UPDATE HISTOGRAM that builds it. MariaDB shows no column statistics. Run exact counts the column instead.

AUTO_INCREMENT counters appear in the explorer under Auto-increment. MariaDB's real sequences keep the Sequences folder.

SQLite

The connection is a Database file, not a host. Seqora stores only its path. There is no TLS and no SSH, because there is no server.

The editor runs against the main schema of that file. ATTACH and DETACH are refused, so one connection is one file. Parameters must be bound: Unbound SQL parameters are not supported. Supply explicit values. PRAGMA runs from an allow-list. The schema-reading ones such as table_info, index_list and foreign_key_check are allowed, settings that change the file are not, and foreign_keys can be set only while the connection is unlocked.

The Plan tab shows EXPLAIN QUERY PLAN, which has no row counts or timings.

Design mode on SQLite is a rebuild. Most ALTER TABLE changes in SQLite mean creating a new table, copying the rows and swapping the names. Seqora does that inside one transaction, with foreign key enforcement off during the copy and checked before the commit. The dry run runs the same transaction and rolls it back.

SQLite has no users, routines or partitions, so it has no Access, routine or partition pages, and no type or extension pages. The inspector shows no column statistics, as on MariaDB. Every install includes one SQLite database to try things on, Sample coffee shop.

Caveats

  • With and without this index is partial off PostgreSQL because it compares estimates, not runs. MySQL and MariaDB plan the query again with IGNORE INDEX on every reference to the table and show The statement planned without it. SQLite plans on an in-memory copy of the schema and statistics with the index dropped, and the headline counts rows visited from sqlite_stat1: About N× fewer rows visited with it.
  • Hiding an existing index on PostgreSQL needs hypopg 1.4 or later. An older install gets Open ALTER EXTENSION in a console.
  • No database version is certified yet. The targets are PostgreSQL 16, MySQL 8.4, MariaDB 11.4 and SQLite 3.46.1.

Last checked against Seqora 0.3.2, PostgreSQL 17, MySQL 8.4, MariaDB 11.4, SQLite 3.46 on .

Found a bug, missing a feature, or just curious? Write to me. Every email lands in my own inbox, not a ticket queue.