Adminer 6.1.0 (released 2026-09-14)
Send the form by the default button by Ctrl+Enter
Display the message on the screen when AJAX-saving
Install Adminer as a web-application
Report an object which doesn't exist instead of printing an empty form
Link the database in the breadcrumb of a routine, sequence, type or event to its section
Don't serve the cached static files of a different build of the same version
Select: Handle columns with a name looking like a function, e.g. NOW()
Select: Don't link COUNT(*) if a function is applied to a grouped column
SQL command: Modify the values in the result by Ctrl+click (bug #1333)
SQL command: Fix the edit links of a table joined more than once
SQL command: Display the values in the result according to their type in all drivers
Export: Allow exporting schema or qualify all names by it
Export: Fix exporting objects of more schemas at once
MySQL: Remove the definer of an exported view or event only if it is the current account, the same as in routines
MySQL: Display the account matched by the connection as the logged user
PostgreSQL: Display and edit PostGIS geometries as EWKT (bug SF-615)
PostgreSQL: Do not link the types created by extensions from the table structure
PostgreSQL: Display the installed extensions on the database page
PostgreSQL, MS SQL: Report a schema which doesn't exist
CockroachDB: Export: Omit WITH (oids = false)
CockroachDB: Treat crdb_internal and pg_extension as read-only system schemas
CockroachDB: Link its documentation
MS SQL: Display, create, alter, drop and call procedures and functions
MS SQL: Fix the length of a varchar(max) column
MS SQL: Fix the default value written with the 'N' prefix
MS SQL PDO: Prefix Unicode strings with 'N'
MS SQL, Oracle: Fix transactions, e.g. a failed import or modification of more rows
MS SQL: SQL command: Keep a transaction between the commands
Oracle: The driver is no longer beta
Oracle: Use schemas as databases instead of tablespaces (bug SF-204, SF-212, SF-238)
Oracle: Create and drop databases (bug SF-246)
Oracle: Display, create, alter and drop triggers (bug SF-385)
Oracle: Display and edit geometries as well-known text instead of empty (bug SF-610, SF-615)
Oracle: Accept and display dates in the ISO format (bug SF-770)
Oracle: Fix foreign keys over multiple columns
Oracle: Fix creating a column with a default value
Oracle: Fix the default value displayed with the quotes around it
Plugins
Driver plugins: Result::fetch_field() reports the type name in native_type instead of the MySQL number in type and charsetnr
Driver plugins: Db::begin(), commit() and rollback() to use the transaction API of the extension
Method manifest() to customize or disable the web app manifest
Method verifyLoginToken() to accept the login form of another website
Method explain() to customize EXPLAIN in SQL command
Internal
Test Oracle
Run the end-to-end tests of different drivers in parallel by composer e2e -- --workers=N
Distribute the tests in the release archive (bug #1332)
Show the review status of the translations in adminer/lang/README.md
Unregister the service worker in the development version served from the URL of a compiled version
v6.0.2
Verify all parts of the server name before connecting (GHSA-rwxg-xph9-82cj, regression from 5.5.1)
Sanitize the connection id returned by the server (GHSA-7c5h-q78c-fpxx, XSS)
Do not drop the old check constraint when the new one cannot be created
Replace the whole last line by the ellipsis when shortening a multi-line text, e.g. a long SQL command
Format numbers according to the conventions of the used language
Alter routine: Preserve all characteristics and edit them in a form instead of in the definition
Autocomplete: Get the columns of the database faster (bug #1328)
Autocomplete: Offer also in the definition of a routine, an event and a view
Edit: Keep the enum value selected by the user after an error (regression from 5.4.0)
Edit: Do not highlight a valid date or time value as too long, e.g. in a datetime(3) column
Select: Keep "Load more data" on the screen when scrolling a wide table horizontally
SQL command: Skip a command with comments only (bug #1331)
RTL: Mirror the borders, alignment, margins and paddings
Cache the assets of the compiled version in a service worker
MySQL: Display the check constraint clause without the extra escaping added by information_schema
MySQL: Do not repeat the error of an unreadable table in the comments of the following tables
MySQL: Display the error of an unreadable table next to its comment
MySQL 9: Create routines with LANGUAGE JAVASCRIPT
MySQL 26.7: Link the documentation of the used version
MariaDB: Display an unreadable table as a table with the error instead of as a view
PostgreSQL: Do not edit and delete the selected row without a unique key in other partitions (bug #1326)
PostgreSQL PDO: Fix export of boolean values (bug #1330, regression from 5.4.4)
SQLite: Get the generated columns and collations also from a single-line CREATE TABLE
SQLite: Support FTS5 and other virtual tables
MS SQL: Get the base type of a column declared with a user-defined type
MS SQL: Offer all the data types supported by the server, e.g. uniqueidentifier (bug #1327)
MS SQL: Add the database Check button
MS SQL: Link the documentation of the used version
Oracle: Link the documentation of the used version
ClickHouse: Print only errors from ClickHouse (GHSA-77qq-q8fv-x45v, regression from 6.0.0)
ClickHouse: Highlight the queries
Elasticsearch: Print only errors from Elasticsearch (GHSA-q8h3-4cx4-prgm, regression from 4.16.0)
Firebird: Highlight the queries
ClickHouse, IGDB, Redis, SimpleDB: Fix loading the driver in the compiled Adminer (bug #1325)
Elasticsearch, Firebird, IGDB, IMAP, MongoDB, Redis, SimpleDB: Fix a fatal error on the pages calling a function missing in the driver
Firebird: Remove the status page, the driver cannot provide it
Plugins
Method serviceWorker() to disable the service worker
Db::attach() gets the server parsed to scheme, host, port, socket and path instead of the string
Methods Driver::supportsAlterTable(), Driver::shadowTables(), Driver::fulltextSql() and property Driver::$fulltextOperator
TableStatus key 'partition' renamed to 'dependent', it marks also the tables belonging to another table
Property Driver::$operators replaced by method Driver::operators()
Internal
Mark the code used only in the compiled or only in the development version
Adminer 6.0.1 (released 2026-08-14)
Run the development version from the adminer/ directory alone, copied anywhere and under any name
Send the session cookie with SameSite=lax, the browsers not defaulting to it sent it also cross-site
Send the cookies set by JavaScript with the same attributes as the other cookies
Do not redirect outside Adminer after saving a row
Do not count a request without credentials as an unsuccessful login
Report a server accepting any password by its own message instead of the one about a missing password (bug #1318)
Print the configuration of Adminer\Password when the database can be accessed without a password
Print the help as a text, not HTML
Verify the CSRF token also when logging in
Verify the CSRF token before killing a query timed out on the client
Send an error HTTP status on an invalid CSRF token and too large POST data
Use the same font in <textarea> as in <input>, keep monospace in the SQL command and JSON values
Autocomplete: Disable in the drivers not using SQL, e.g. Redis
Autocomplete: Offer only the statements allowed in a trigger and no statement in a check constraint
Create table: Print the success message in drivers not using SQL, e.g. Elasticsearch (regression from 6.0.0)
Database schema: Arrange the tables in a grid by their foreign keys instead of in one column
Database schema: Do not display the tables hidden by tableName() and the references to them
Select: Search only the columns which can hold the searched value, convert the other types to text (bug #1216)
Select: Modify or delete several rows in a transaction
Edit: Keep the JSON value entered by the user after an error, it was replaced by null if it was invalid
Edit: Print the query fetching the row, the same as in Select
Import: Display the progress of the file upload
MySQL: Support collation of routine parameters and return values
MariaDB 12: Support triggers for multiple events and for UPDATE OF (bug #1306)
PostgreSQL: Edit and delete rows identified by a column of a composite type (bug #1217)
MS SQL: Display all result sets of a procedure, a message from the server stopped the iteration (bug #1180)
MS SQL: Display the messages printed by the server as warnings, e.g. by PRINT
MS SQL: Fix importing a CSV file to a table with an identity column through PDO, it silently did nothing
Elasticsearch: Rename the database from elastic to data
Elasticsearch: Redirect to the only database
Elasticsearch: Print the executed commands in the messages
Elasticsearch: Highlight the printed queries
OpenSearch: Add support via Elasticsearch driver
Redis: Redirect to the only table
Editor: Do not access a database without a password, the same as Adminer
Plugins
Method error() to modify the printed database error messages (bug #1249)
Method dumpPrint() to print HTML code in the export form
Method editRowPrint() receives the query which got the edited row and the time it took
Plugin config: Save the settings by POST so that the CSRF token can be verified
Plugin file-upload: Do not let the column name escape the upload directory
Plugin login-otp: Do not create a permanent login without a valid OTP
Plugin login-password-less: Moved to Adminer as the Adminer\Password class, the plugin only extends it
Plugin login-reverse-proxy: Group the invalid logins also by the address of the proxy
Plugin login-servers: Allow server description with special characters (bug #1320)
Plugin login-ssl: Use also in the pdo_sqlsrv extension (bug #1324)
Plugin login-table: Verify the password from column password_hash
Plugin slugify: Print only a numeric maxlength
Plugin sql-log: Write the log to the temp directory by default
Driver plugins: Driver::select() assigns the executed query to $this->query
Driver plugins: Bundle the syntax highlighter in the plugin file, adminer-plugins/jush-<driver>.js is not loaded anymore
Driver plugins: Method jushAutocomplete() to disable or replace the autocomplete of the query <textarea>
Internal
Move the submodules from externals/ to where they are used: adminer/static/jush, conf/JsShrink and conf/PhpShrink
Tests: Cover the CSV import and export, pagination, modifying a value by Ctrl+click, the bulk table operations and the SQL file import in every driver
Tests: Cover the bundled plugins by plugins.spec.js, which loads them from a fixed set in tests/plugins.php
Tests: Move the entry points to tests/, they are fixtures and not examples to deploy
Check the code style also by Slevomat Coding Standard and the compiled files by PHPCompatibility (composer compat)
Enable the PHPStan strict rules which report no error
Install PHPCS and PHPStan by composer install, like ESLint
Skip all the linters in composer install --no-dev, it only initializes the submodules
Adminer 6.0.0 (released 2026-08-07)
Escape index type, algorithm and length in table structure (XSS)
Escape event schedule and non-numeric table status values (XSS)
Fix translations containing an apostrophe in single language versions
Escape < in strings printed to JavaScript, a name containing <!--<script> broke the page
Login: Disallow accessing servers which accept any password (e.g. PostgreSQL with trust authentication)
Login: Suggest the login-reverse-proxy plugin when throttling logins of a proxied request
Select: Disallow modifying data by the SQL operator (CSRF)
Check for a new version even without JavaScript
Fix JavaScript in Safari < 11 and Firefox < 52 (regression from 5.5.0)
Fix showing and hiding elements in Chrome < 61 and Edge < 17 (regression from 5.1.0)
Send the JSON responses of AJAX requests as application/json instead of text/javascript
Sort languages by their translated name
Fix the copy to clipboard icon not displayed on Apple systems
Close the menu on small screens by Esc
Drop compatibility with IIS 5 and with IIS 7.0 before its 2008 FastCGI update
Shorten URLs by escaping only the necessary characters, e.g. where[0][col] instead of where%5B0%5D%5Bcol%5D
Send GET forms by JavaScript to shorten their URLs too
Tables overview: speed up, show totals in SQLite, real size in MS SQL, Oracle
Table structure: Shorten long checks and generated columns
SQL command: Show column type in result table header
SQL command: Show number of rows in all drivers
SQL command: Export result to CSV by JavaScript without re-running the query (bug #1108, SF-760)
SQL command: Rollback an unfinished transaction so that it doesn't break the following queries
Alter table: Add next column without page reload
Alter table: Do not highlight other move handles while dragging a column
Alter table: Move columns on touch screens
Alter table: Edit multiline column comments in a textarea
Alter table, Privileges: Do not print a success message if nothing was changed
Alter table, Select: Warn if the number of fields can exceed max_input_vars
Alter view, routine and type: Use a transaction instead of a temporary object in PostgreSQL, SQLite, MS SQL
Alter routine: Fix altering a routine with a name longer than 42 characters
Select: Remove asking for the page number after clicking the Page legend
Select: Highlight the current page in the pagination
Select: Fix the number of selected rows after going back in history
Select: Keep sorting by an aggregation function in the Sort fieldset
Select: Show the edit link before the row checkbox and align the column to the right
Select: Move the Modify link to the Modify fieldset, disable Save until a value is modified
Select: Disable inline edit of binary values
Select: Clear the search field and its column by Esc in Firefox
Select: Import CSV in all drivers, not only in those with their own way to insert or update a row
Select: Fix Load more data in drivers paginating by a cursor (Redis, SimpleDB)
Select: Prefill New item with the values of all columns searched by equality, not only foreign keys
Edit: Keep values of columns with special characters in name after error
Edit: Fix switching function to SQL with the edit-foreign plugin (bug #1254)
Edit: Hide the value field for functions without arguments (e.g. now, uuid)
Edit: Fix editing rows with binary columns in tables without a unique key
Edit: Disable Save and continue edit after changing a value identifying the row
Select, Edit: Highlight JSON by a dedicated highlighter instead of the JavaScript one
Export: Fix the TAR archive of multiple tables in CSV, it contained SQL of views and foreign keys
Export: Export data in all drivers, not only in those able to run the generated SELECT
Export: Fix importing a dump with data only, the tables were truncated one by one and their foreign keys were re-created
MySQL: Do not use SSL if the login-ssl plugin is configured only for other drivers
MySQL: Cache the list of databases only if getting it is slow
MySQL: Link performance_schema and sys tables to their documentation
MySQL: Fix length of routine parameters with unsigned or zerofill, support MySQL < 8 again (bug #1312, regression from 5.4.4)
MySQL: Fix a warning on the Create table page with the PDO extension
PostgreSQL: Support operator classes in indexes
PostgreSQL: Do not show functions and types created by extensions
PostgreSQL: Create routines with a dollar quoted body so that it is not escaped
PostgreSQL: Fix altering functions with parameters of array or user-defined types
PostgreSQL: Hide table actions and row editing in pg_catalog and pg_toast
PostgreSQL: Support range types (bug #1308)
PostgreSQL: Show composite, domain and range types next to enums
PostgreSQL: Alter and rename user defined types
PostgreSQL: Add values to an enum type without re-creating it
PostgreSQL: Export all user defined types, fix exporting enum values containing an apostrophe
PostgreSQL: Drop all tables at once in export so that foreign keys, views and types don't prevent the drop
PostgreSQL: Drop the selected tables at once so that foreign keys don't prevent the drop
PostgreSQL: Export materialized views with their indexes, they were exported as plain views
PostgreSQL: Import CSV by INSERT ... ON CONFLICT instead of two queries for each row
PostgreSQL: Show, alter and export Auto Increment, only sequences with an unusual name were exported
PostgreSQL PDO: Fix the number of affected rows in COPY ... FROM stdin
PostgreSQL, MS SQL: Show two columns in select COUNT(*), COUNT(DISTINCT id)
PostgreSQL, MS SQL: Highlight primary keys in the database schema (regression from 5.1.0)
CockroachDB: Do not offer deferrable foreign keys, they are not supported
SQLite: Fix working with binary data through PDO
MS SQL: Treat binary fields as blob (bug SF-369)
MS SQL: Hide table actions and row editing in the sys schema
MS SQL: Fix cloning and inserting a row with an identity column, the form offered the original value
MS SQL: Fix error on the databases overview if a database has no collation
Elasticsearch, ClickHouse: Use default port
Elasticsearch: The driver is no longer beta, it works with Elasticsearch 7, 8 and 9
ClickHouse: Fix nullable columns, fix default values, show server version
ClickHouse: Support schema management, introspection and administration
MongoDB: Authenticate against the database used in login
MongoDB: Do not treat the string NULL as the NULL value
MongoDB: Show the primary key column when altering indexes (regression from 5.4.0)
Redis: SQL command in the redis-cli syntax, print executed commands
Redis: Print binary keys and values in the redis-cli syntax
Redis: Display the type of keys
SimpleDB: Use default server
CSS: Improve contrast of query time and dark mode
CSS: Display the repeated links and row checkboxes outside the table, designs/adminer-border keeps them inside
Editor: Display all images recognized by PHP, set their size, load them lazily
Editor: Fix a fatal error in select with an empty foreign key value (regression from 5.1.1)
Editor: Don't offer an empty option in a select of a not null foreign key, saving it failed in the database
Designs: Show version of Adminer next to a used design not matching this version
Plugins: dumpData() gets the parts of the select instead of a query, it selects the rows by Driver::select()
Plugins: Methods importPrint() and importProcess()
Plugins: Method verifyVersion()
Plugins: Methods commentValue() and commentInput() (bug #1233)
Plugins: Show driver plugins in the list of loaded plugins
Plugins: Show version of Adminer next to plugins not matching this version
Plugins: Remove edit-calendar, tinymce, json-column, pretty-json-column, translation, email-table, dump-php, master-slave
Plugins: Do not fail with a fatal error when a plugin is not an object (bug TimWolla/docker-adminer#211)
Plugins: Fix missing translations in the compiled version
Driver plugins: Do not bundle the syntax highlighter of igdb and simpledb, load it from adminer-plugins/jush-<driver>.js
Plugin login-ip: Allow localhost by default, require the request to not be proxied if X-Forwarded-For prefixes are not specified
Plugin login-password-less: Allow the plugin password to be also the password of some server
Plugin menu-links: Add option to show the select link and other repeated links only on hover
New plugin: Create a table from an imported CSV file
New plugin: Display images in select, same as in Adminer Editor
New plugin: Log in only by a passkey holding the passwords
New plugin: Warn by a red strip if Adminer or the database doesn't run on the local machine
Internal
Register JavaScript event handlers by a data attribute instead of a script element
Register the event handlers in functions.js instead of an inline script
Composer: Initialize submodules on install
Remove the Makefile, Composer scripts cover compiling and cleaning
Move documentation to docs/, linter configuration to conf/, coverage.php to tests/
Add docs/versions.php measuring the size of all releases
Coding style: Wrap lines to 200 characters
Cache PHP_CodeSniffer results in the system temp directory
PHPStan: Check the Editor, more checks which the code already passes
Add type declarations to all drivers and the Editor
Use named constants instead of their values
Compile: Exit if a replacement doesn't match
Compile: Fix compiling a driver without support for the SQL command
Compile: Compress translations with the English translation as a dictionary, it saves 21 kB
Require ES6 in JavaScript, remove old browser workarounds
Use standard JSDoc @param and @return syntax
ESLint: Install it by composer install, run it in composer check and CI
ESLint: Check also the jush modules compiled into the single file
Docs: Handling of values and binary data, plugin translations, CSS changes must not break skins
Rename the Git master branch to main
Run the command line tests by composer test and in CI
Convert the end-to-end tests from Katalon Recorder to Playwright, run them headless by composer e2e
Fix the code coverage reporting all files as fully covered when OPcache is enabled
Adminer 5.5.1 (released 2026-07-21)
Ignore invalid X-Forwarded-Prefix (GHSA-fr74-9mf9-gf44)
Login: Allow :/_ in server (bug #1305, regression from 5.5.0)
Compile: Valid UTF-8 (bug #1113, #1213)
Compile: Replace LZW with deflate compression
Add missing translations
Syntax highlighting: Update MySQL, MariaDB, SQLite, PostgreSQL
Support disabled set_time_limit() and ini_set() (bug #1288)
PostgreSQL: Log in with empty server (bug #1304, regression from 5.5.0)