Skeema is a tool for managing MySQL tables and schema changes in a declarative fashion using pure SQL. It provides a CLI tool allowing you to:
Skeema supports a pull-request-based workflow for schema change submission, review, and execution. This permits your team to manage schema changes in exactly the same way as you manage code changes. Our new companion CI app for GitHub repos even provides automatic linting of schema change pull requests.
skeema binaries for Linux and macOS can be downloaded from the releases page.
Compiling from scratch requires the Go programming language toolchain, version 1.12 or higher.
To download, build from master, and install (or upgrade) Skeema, run:
go get -u github.com/skeema/skeema
The Skeema CLI tool is generally available, having reached the v1 release milestone in July 2018. Prior to that, it was in public beta since October 2016.
skeema binary is supported on macOS and Linux. No native Windows version is available yet, though the Linux binary works properly under WSL.
Tagged releases are tested against the following databases, all running on Linux:
Outside of a tagged release, every commit to the master branch is automatically tested against MySQL 5.6 and 5.7.
A few uncommon MySQL features -- such as spatial indexes and subpartitioning -- are not supported yet. Skeema is able to create or drop tables using these features, but not alter them. The output of
skeema diff and
skeema push clearly displays when this is the case. You may still make such alters directly/manually (outside of Skeema), and then update the corresponding CREATE TABLE files via
Created and maintained by @evanelias.
Additional contributions by:
Support for stored procedures and functions generously sponsored by Psyonix.
Support for partitioned tables generously sponsored by Etsy.
Copyright 2019 Skeema LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.