github.com/skeema/skeema
v1.14.1
#1294 most downloaded on Go modules
skeema/skeema
What this package is like to depend on
Last release 16 days ago
07 Aug 2026
Ships fairly regularly
a new release about every 2 months
Rarely documented
notes for 10 of 53 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
138 releases · first in 2018
7 releases in the last 12 months
see the full history below
Release timeline
138 releases · Jul 2018 to Aug 2026Releases
latest 60 of 138-
v1.14.2-0.20260807150311-10b7a895c24007 Aug 2026 pre-releaseNothing published for this version
-
v1.14.123 Jul 2026Release notes
Open source →- Windows bug fix: log colorization and word-wrapping were erroneously disabled in Skeema v1.13.2 and v1.14.0 (f22e0ea)
- DEFINER edge case bug fixes
- When a stored object (procedure, function, trigger, view, event) used a DEFINER containing a quoted @ symbol in the first part of the username (e.g.
'[email protected]'@'%'), the directory would be skipped with an error in Skeema v1.12.3 thru v1.14.0 (#262, dd6fceb) - In a hand-written
CREATEstatement, in some situations the server permits the host portion of a DEFINER to not be wrapped in quotes/backticks, but Skeema would emit a warning about the statement being invalid (cc49515)
- When a stored object (procedure, function, trigger, view, event) used a DEFINER containing a quoted @ symbol in the first part of the username (e.g.
- When setting the password option to a backtick-wrapped external command shellout, the
{USER},{HOST}, and{PORT}variables behaved incorrectly if the host was an IPv6 address, or if the username contained @ symbols (926b478) - The user option now provides a clear error if the configured username contains a colon, which isn't supported due to a limitation in the database driver DSN format (62e8d57)
- Database server version/flavor detection logic has been made more robust, to account for MySQL's switch to YY.M versioning starting with MySQL 26.7 (5cc5cb0)
- Installing Skeema using Homebrew for Linux was inadvertently broken in v1.14.0; although we don't document support for Homebrew on non-Mac systems, this has nonetheless been corrected (7b13c11)
An installation guide and full documentation are available on our website skeema.io.
-
v1.14.025 Jun 2026Release notes
Open source →See the Skeema v1.14 release announcement blog post for a summary of the most important changes in this release.
- MySQL 9.7 support (b2f241f, 23b85cd)
- This is the latest MySQL LTS version series, supported by Oracle for 8 years
- JSON Duality Views, which are supported in Skeema Premium, can now be made writable
- MariaDB 12.3 support (53b75d1, 831a1d1)
- This is the latest MariaDB LTS version series, supported by MariaDB for 3 years
- New column type XMLTYPE for storing XML data
- Tables partitioned by
KEYorLINEAR KEYnow support additional ALGORITHM clause values
- Aurora MySQL 8.4 support
- This is the latest major version of Aurora, released last month
- Skeema Premium is tested against all major versions of Aurora
- Aurora 8.4 strictly requires TLS for all connections, so Skeema's SSH tunnel functionality no longer auto-disables TLS when using flavor=aurora:8.4 or when the flavor isn't known yet
- The password and user options now support the ability to shell out to external commands, capturing the STDOUT for use as the password or user value (#101, 9a2b471, f55d539)
- To enable this functionality, wrap the value in backticks, for example
password=`aws secretsmanager get-secret-value --secret-id YOUR_SECRET_ID --query SecretString --output text | jq -r '.password'` - The command-line can make use of variables such as
{ENVIRONMENT},{HOST}, etc. See option reference links above for full list.
- To enable this functionality, wrap the value in backticks, for example
- The host option now supports the ability to directly shell out to an external command (9617edc)
- To enable this functionality, wrap the value in backticks, for example
host=`/opt/bin/my_custom_lookup_script.sh {ENVIRONMENT}` - This is a simpler alternative to host-wrapper for cases where there's no need for lookup keys or a top-level/generic command line
- To enable this functionality, wrap the value in backticks, for example
- Additional deprecations ahead of Skeema v2 as per our March blog post (e22f1a9, ba8a923, 8bf1810)
- MySQL 5.6-5.7 and MariaDB 10.2-10.3 are now deprecated (but still supported in Skeema v1)
- Support for legacy Intel Macs will be dropped in Skeema v2
- Mac builds of Skeema v2 will only be supplied as zip files, not tar.gz or dmg
- Flavor detection fallback logic has been improved, to avoid any future conflict around detection of MySQL >9 vs MariaDB 10.x (f453422, 6a76243)
- Skeema Premium bug fix: if the SELECT statement of a view references another view which uses a non-default DEFINER, attempting to use workspace=docker would fail with an error. This now works properly.
- Various internal cleanups, including removal of the sqlx dependency (3277076, 049a284, 7677594, bf0ac07, 1a85ed5)
- MySQL 9.7 support (b2f241f, 23b85cd)
-
v1.13.3-0.20260326230446-e22f1a93c75a26 Mar 2026 pre-releaseNothing published for this version
-
v1.13.3-0.20260305223009-1a85ed57f63405 Mar 2026 pre-releaseNothing published for this version
-
v1.13.202 Dec 2025Release notes
Open source →- MariaDB 12.1 support (3354825)
- Foreign key constraint names no longer need to be unique per schema; they now use a table-relative namespace
- MySQL's caching_sha2_password can now be used in MariaDB, including option server-public-key-path.
- Skeema Premium workspace error bug fix: when using a combination of many foreign keys, many views referring to tables with foreign keys, and multi-threaded workspaces,
Error executing DDL in workspace: Error 1146could be triggered randomly due to foreign key locking conflicts. This has been fixed by correcting the order of table retries, relative to view creation in the workspace. (#258, f13350f) - SSH tunnel improvement: upon program exit, spurious warnings about failed SSH keep-alives were occasionally logged due to a race condition in shutdown logic. These warnings were harmless, but nonetheless have now been prevented.
- MariaDB 12.1 support (3354825)
-
v1.13.130 Oct 2025Release notes
Open source →- MariaDB 12.0 support (a4737d3)
- Multi-event triggers are now supported in Skeema Premium
- MySQL 9.5 support, as well as some deferred improvements from MySQL 9.4 (72a7fc4, e1db2f9)
- lint-reserved-word now flags
EXTERNALas a MySQL reserved word - JSON Duality views are now supported in Skeema Premium
- lint-reserved-word now flags
- Safety improvement: the current Skeema version is now compared to the directory's generator version, and an error or warning is logged if your Skeema binary's version is insufficient to interact with the directory properly (8c57bae)
- Performance improvement: connection re-use has been improved for several code paths, reducing the number of new connections launched by Skeema (49b79d1, 729c805)
- SSH tunnel improvement on MacOS: if
~/.ssh/configenablesUseKeychain, and the necessary SSH key is not already loaded into thessh-agent(e.g. due to a recent machine reboot), Skeema now attempts to load missing keys from the keychain automatically as needed - When running
skeema versionfrom a Skeema Community binary built from source with Go module support, the output now includes more build information, such as the Git commit SHA and dirty-change status (e5b0d4f)
- MariaDB 12.0 support (a4737d3)
-
v1.13.021 Aug 2025Release notes
Open source →See the Skeema v1.13 release announcement blog post for a summary of the most important changes in this release.
- Major performance improvements
- New option temp-schema-mode replaces temp-schema-threads and introduces automatic optimizations to reduce network round-trips when operating on a remote database server (c5b7c5a, 4feb222)
- When the debug option is enabled, workspace performance timers are now logged, making tuning easier (3a4b4a4, defb009)
- Workspace cleanup is now faster in nearly all situations (18985dc, cc16ac6)
- With Docker workspaces, tmpfs data mount is now supported for all flavors/images when using docker-cleanup=destroy (3e1a5e9)
- Seed data interactions (both push and pull) now use network compression automatically whenever nontrivial network latency is detected
- Deprecations and associated warning logs in preparation for Skeema v2 (68118cb, e701cab, d151e8a, 600b3d3, 823a2f0)
- Support for MySQL 5.5 and MariaDB 10.1 is now deprecated
- temp-schema-threads: use new enum option temp-schema-mode instead
- concurrent-instances: use new name concurrent-servers instead
- alter-validate-virtual: use alter-algorithm=copy instead
- lint-display-width
- temp-schema-binlog
- skip-my-cnf
- Debug-level logging regarding upcoming default value changes for format, new-schemas, and docker-cleanup
- MariaDB 11.8 support (a3790a1)
- This is MariaDB's latest LTS series
- Parameters for stored procs and funcs can now specify default values
- Triggers can specify
[BEFORE|AFTER] UPDATE OF [column, column, ...]to only fire if specific columns were updated
- MySQL 9.3 and 9.4 support (ea6abc8, b231f76)
- MariaDB server bug workaround with lower_case_table_names=2 when using stored routines in a schema with mixed-case name (f623e3c)
- MariaDB improvement: Roles may now be used directly as
DEFINERs in stored objects, as well as the allow-definer option (ac6e8db, 1249b37) - Several edge-case fixes and improvements when working with events
- Table size calculations (used in safe-below-size, alter-wrapper-min-size, and the
{SIZE}variable in alter-wrapper or ddl-wrapper) are now more accurate, especially for partitioned tables (239cc4a) - Additional minor tweaks for various edge cases (78cce1c, f0f2c1a, 666ac05, b02733e, f90b049, 6e60548)
- Major performance improvements
-
v1.12.4-0.20250520020612-68118cbc8fda20 May 2025 pre-releaseNothing published for this version
-
v1.12.327 Feb 2025Release notes
Open source →- MariaDB 11.7 support (684ffe5)
- All Skeema commands can now fully handle MariaDB
VECTORcolumns and indexes, including the optionalDISTANCEandMattributes for indexes - lint-reserved-word now flags new reserved word
VECTOR
- All Skeema commands can now fully handle MariaDB
- MySQL 9.2 support (10560a6)
- lint-reserved-word now flags new reserved word
LIBRARY
- lint-reserved-word now flags new reserved word
- Workspace cleanup now uses chunking, instead of concurrency, to efficiently remove empty workspace tables (0617f91)
- This Skeema change provides an important workaround for a recent MariaDB server bug involving foreign keys. See MDEV-36129, which affects all MariaDB 10.6+ releases from May 2024 onwards: 10.6.18+, 10.11.8+, 11.0.6, 11.1.5+, 11.2.4+, 11.4.2+, and all 11.5-11.7+ GA releases.
- Performance improvement for slow network links (WAN/VPN/cross-region) when using many/large stored procedures, functions, views, or triggers (3e822d6)
- Timeout behavior has been improved to ensure that server-side lock wait timeouts always occur prior to any client-side query timeout (373c702)
- This aids in troubleshooting Skeema performance issues, allowing easier identification of whether the root cause relates to locks (now manifests as a lock wait timeout error) vs a slow query timing out due to a non-responsive database server (which still shows an I/O timeout error).
- TLS fix: very old MySQL 5.7 point releases (prior to MySQL 5.7.28 / Oct 2019) don't support TLS 1.2, so use of TLS 1.1 is now permitted automatically for these server versions (e46bd0c)
- MariaDB 11.7 support (684ffe5)
-
v1.12.217 Dec 2024Release notes
Open source →- TLS fixes for allowing encrypted connections to old/EOL database server versions
- By default, Go 1.22+ no longer enables TLS cipher suites using RSA key exchange, but these older cipher suites are typically needed to establish a secure connection to MySQL 5.5-5.7, Percona Server 5.5-5.6, or MariaDB 10.1. Skeema now allows use of these cipher suites when communicating with older servers, or when the server flavor has not been introspected yet. (#239, 6d2daf0)
- By default, Go 1.18+ normally uses a minimum of TLS 1.2, which is not supported by MySQL 5.5-5.6 or Percona Server 5.5-5.6. Skeema now allows use of TLS 1.0 when communicating with these older servers, or when the server flavor has not been introspected yet. (7a4fbcd, 3cfa747)
- When TLS-related options are specified on the command-line for
skeema initorskeema add-environment, these options are now automatically persisted to the .skeema option file, similar to other connectivity-related options. (c4f0af8) - Bug fix: when using the ssl-cert and ssl-key Premium options alongside ssl-mode=preferred, an error would be returned if the server was not actually configured to support TLS. This situation now falls back to a plaintext connection, which is the intended behavior of ssl-mode=preferred aligning with the standard
mysqlcommand-line client.
- TLS fixes for allowing encrypted connections to old/EOL database server versions
-
v1.12.102 Dec 2024Release notes
Open source →- MySQL 9.0 and 9.1 support (7c94fcb, 47bfc0a, a0a060a)
- The new
VECTORcolumn type is supported. Inskeema diffandskeema push, altering a column type betweenVECTORand any other sufficiently-large binary type is permitted as a safe operation since the conversion is non-lossy. - MySQL 9 finally processes "inline" foreign key definitions (that is,
REFERENCESclause in a column definition). These are supported as-is in Skeema.
- The new
- MariaDB 11.5 and 11.6 support (6165c90, f24ad30)
- MariaDB 11.5 changes the default collation for Unicode charsets to use uca1400_ai_ci collations, which are fully supported in Skeema.
- MariaDB 11.5 solves the
TIMESTAMPcol type's previous Y2K38 limitation, and Skeema's lint-has-time annotation message has been adjusted accordingly.
CHECKconstraint improvement: When a diff only affects the name of aCHECKconstraint without modifying its check expression,skeema diffandskeema pushnow ignore this cosmetic change by default. This improves compatibility with external OSC tools, which inherently need to renameCHECKconstraints as part of their operation. This new behavior can be overridden by enabling the --exact-match option. (f000616)- Event handling improvements and fixes (Skeema Premium)
- When an event diff only included a change to the
DEFINERclause, and no other differences, theALTER EVENTemitted by Skeema was not valid SQL (despite conforming to syntax in the MySQL and MariaDB manuals). To fix this situation, the SQL will now also include an additional no-op clause, such asENABLEfor an event that is already enabled. - Several dump normalizations for
CREATE EVENTstatements were inadvertently omitted the first time an event was dumped byskeema initorskeema pull. - If any workspace query failed (e.g. query timeout), and any events were present in the *.sql definitions, a panic would result instead of the intended workspace query failure error message. (#229)
- When an event diff only included a change to the
- SSH tunnel enhancements (Skeema Premium)
- CAs, which are indicated in the known_hosts file using
@cert-authoritylines, are now fully supported. (skeema/knownhosts#8, skeema/knownhosts#9) - known_hosts lines using non-default ports are now matched properly. (skeema/knownhosts#10)
- CAs, which are indicated in the known_hosts file using
- If any hand-written *.sql files use the optional
CREATE OR REPLACESQL syntax, Skeema now parses and ignores theOR REPLACEclause. Previously, use of this syntax would prevent Skeema from parsing the statement. (6805737) - Enhancements for Docker workspaces
- When a redundant non-unique index is flagged by lint-dupe-index, the annotation message is now clearer (since false positives may be possible) and suggests making the index be
INVISIBLE/IGNOREDbefore dropping (#238, #237) - MariaDB's August 2024 point releases have changed the formatting of compressed columns in
SHOW CREATE TABLE, which affected Skeema's diff logic safeguards. This change is now handled and compressed columns are fully supported again. (49aed41) - Minor wording changes in log messages and help text, for consistency. (4f8fa44, 5f7598e)
Thank you to all code contributors and issue reporters!
- MySQL 9.0 and 9.1 support (7c94fcb, 47bfc0a, a0a060a)
-
v1.12.1-0.20241125214023-f24ad306663d25 Nov 2024 pre-releaseNothing published for this version
-
v1.12.1-0.20241122230102-9559cc71a57322 Nov 2024 pre-releaseNothing published for this version
-
v1.12.1-0.20241115160733-539551a8152a15 Nov 2024 pre-releaseNothing published for this version
-
v1.12.1-0.20241113233546-af1b3b54e27313 Nov 2024 pre-releaseNothing published for this version
-
v1.12.1-0.20241108205827-6d6e846f485308 Nov 2024 pre-releaseNothing published for this version
-
v1.12.1-0.20240912224320-5f7598e3ed8b12 Sep 2024 pre-releaseNothing published for this version
-
v1.12.1-0.20240905220255-a483a70a2e4305 Sep 2024 pre-releaseNothing published for this version
-
v1.12.001 Jul 2024Release notes
Open source →See the Skeema v1.12 release announcement blog post for a summary of the most important changes in this release.
- MySQL 8.4 is now supported (4674f90, 992dd60)
- New linter check lint-fk-parent examines the parent (referenced) side of foreign key constraints, confirming that the parent table exists, and has an appropriate unique index as per new behavior in MySQL 8.4 (#79, 45d66b6, 38f22f0, db33690)
- lint-reserved-word now accounts for several reserved word changes in MySQL 8.2, 8.3, and 8.4
- MariaDB 11.4 is now supported (94f8475)
- Skeema's baseline TLS support is compatible with MariaDB 11.4's new automatic self-signed server certificates, similar to the behavior of MySQL 5.7+. Configuring Skeema to use ssl-mode=required works as expected with MariaDB 11.4 out of the box.
- Events (scheduled tasks) can now be fully managed and diffed by Skeema Premium (#61)
- New options ignore-event and lint-has-event provide parity with other object types.
- Existing options allow-unsafe, lint-reserved-word, lint-definer, strip-definer, lax-comments, and compare-metadata now interact with events.
- To export any existing events from your database server, run
skeema pullone time after upgrading to Skeema v1.12. Note that if your Skeema database user isn't a superuser, you must have the EVENT privilege to interact with events. - Refer to the events documentation page for full usage instructions and special cases.
- Index renames are now detected automatically by
skeema diffandskeema push, which will emitALTER TABLE ... RENAME KEYclauses as appropriate (478ceaf, d67a058) - Substantial performance improvements and memory usage reduction when processing a directory containing a large volume of .sql files, such as thousands of CREATE statements and/or sizable seed data (9f49591)
- Linter bug fix: when using workspace=temp-schema, if the value of the flavor option is determined to be incorrect / outdated relative to the actual workspace server, linter check behavior will now ignore the incorrect value and use the server's actual flavor. (c151901)
- MySQL 8.4 is now supported (4674f90, 992dd60)
-
v1.11.3-0.20240701210600-cbec6b66616401 Jul 2024 pre-releaseNothing published for this version
-
v1.11.3-0.20240528234453-38f22f05574628 May 2024 pre-releaseNothing published for this version
-
v1.11.3-0.20240523221359-45d66b6e452523 May 2024 pre-releaseNothing published for this version
-
v1.11.3-0.20240516203831-c151901616a516 May 2024 pre-releaseNothing published for this version
-
v1.11.203 Apr 2024Release notes
Open source →- MySQL 8.3 is now marked as supported (31239e7)
- MariaDB 11.3 is now marked as supported (c05a1fa)
- In MariaDB 11.3+, modifying a column's data type from inet4 to inet6 is no longer considered unsafe
- Several improvements and edge case fixes for Docker workspaces, especially when using an arm64 system (e.g. Apple Silicon)
- When copying the sql_mode from the target database server and applying it to the Dockerized instance, if the flavors/versions of the two databases differ, incompatible sql_mode values are now removed automatically (686294e)
- When using an arm64 client system with a MySQL 5.x requested flavor, utf8mb4 columns now use the old MySQL 5.x collation default in the Dockerized instance, despite it actually running MySQL 8.0 for arm64 compatibility (48d2074)
- When using an arm64 client system with a MySQL 5.x requested flavor, utf8mb3 columns could cause an uncaught panic due to a logic bug, which is now fixed (58e9338, #226)
- Percona Server 8.0, 8.1, 8.2 images are now available regardless of CPU architecture; previously 8.0 was only available for amd64, and 8.1+ was unavailable entirely (f7753c1, e50f754, da0e8e1)
- If the requested flavor value is a release series newer than the current version of Skeema, a non-fatal warning is now logged; previously this caused a fatal error (a45dbf2)
- Logging improvement: word wrapping is now disabled automatically if STDERR is a narrow terminal window below 80 characters in width (4ab585c)
- MariaDB bug fix: when using foreign key constraints in MariaDB 10.6+, Skeema's workspace cleanup step could sometimes stall due to database server bug MDEV-32899; this condition is now avoided by using a low innodb_lock_wait_timeout and retries during workspace cleanup (a5ed51d)
- MariaDB bug fix: in lint-reserved-word, erroneous handling of two MariaDB-specific reserved words has been corrected (0c0b8a8)
- Premium edition bug fix: when using SSH tunnel functionality to connect to a server that only has an RSA host key, previously the rsa-sha2-512 or rsa-sha2-256 algorithms would not be attempted by Skeema during the handshake. This is now fixed, thanks to a community contribution to our open source knownhosts wrapper package. (skeema/knownhosts#6)
Thank you to all code contributors and issue reporters!
-
v1.11.2-0.20240308214304-58e9338128a308 Mar 2024 pre-releaseNothing published for this version
-
v1.11.2-0.20240304195633-0c0b8a894ece04 Mar 2024 pre-releaseNothing published for this version
-
v1.11.2-0.20240226223802-c05a1fa7cd4d26 Feb 2024 pre-releaseNothing published for this version
-
v1.11.2-0.20240222233555-98313cf0370b22 Feb 2024 pre-releaseNothing published for this version
-
v1.11.2-0.20240208234732-4ab585caeb5c08 Feb 2024 pre-releaseNothing published for this version
-
v1.11.2-0.20240131164122-686294eda80e31 Jan 2024 pre-releaseNothing published for this version
-
v1.11.104 Dec 2023Nothing published for this version
-
v1.11.1-0.20230927223854-4d7432e8659027 Sep 2023 pre-releaseNothing published for this version
-
v1.11.026 Sep 2023Nothing published for this version
-
v1.10.2-0.20230926195640-1d57d60c98a526 Sep 2023 pre-releaseNothing published for this version
-
v1.10.2-0.20230821224959-a3ecc184bc7121 Aug 2023 pre-releaseNothing published for this version
-
v1.10.2-0.20230804151730-f4e480f3a34504 Aug 2023 pre-releaseNothing published for this version
-
v1.10.120 Jun 2023Nothing published for this version
-
v1.10.1-0.20230620194926-9238a8eac9a420 Jun 2023 pre-releaseNothing published for this version
-
v1.10.025 Apr 2023Nothing published for this version
-
v1.9.1-0.20230324212747-4c2ddd0e978724 Mar 2023 pre-releaseNothing published for this version
-
v1.9.1-0.20230314200355-94eaa998fbb914 Mar 2023 pre-releaseNothing published for this version
-
v1.9.1-0.20230228005951-0177ef95c93228 Feb 2023 pre-releaseNothing published for this version
-
v1.9.1-0.20221229001044-7b1808d43ec029 Dec 2022 pre-releaseNothing published for this version
-
v1.9.030 Nov 2022Nothing published for this version
-
v1.8.214 Sep 2022Nothing published for this version
-
v1.8.128 Jul 2022Nothing published for this version
-
v1.8.002 Jun 2022Nothing published for this version
-
v1.7.2-0.20220418154458-bdc279e3658418 Apr 2022 pre-releaseNothing published for this version
-
v1.7.130 Mar 2022Nothing published for this version
-
v1.7.1-0.20220330040433-4630511771fc30 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220324041734-072e6b219a3524 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220324041215-5697cfe7ff5424 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220322225645-6cbff9caec1b22 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220316040839-3e40b6cf468c16 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220315024756-a302e6c9ff4c15 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220314224127-9a9112da41e814 Mar 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220224192828-5e971e07227d24 Feb 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220223003641-a03718caac9823 Feb 2022 pre-releaseNothing published for this version
-
v1.7.1-0.20220220210631-ef6c0f5b50ca20 Feb 2022 pre-releaseNothing published for this version