migro alternatives and similar shards
Based on the "Database Tools" category.
Alternatively, view migro alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of migro or a related project?
A relational database migration tool, written in Crystal. It uses the cql framework.
- Crystal (currently built & tested using 0.24.1)
Clone this repository
git clone https://github.com/aisrael/migro.git cd migro
Run the tests
To run the tests, we use Docker + Compose to bring up a PostgreSQL environment. First go:
Then, in another terminal
DATABASE_URL=postgres://migro:[email protected]/migro_test crystal spec
Build the executable and place it in your $PATH
shards build --release
That will build
bin/migro. Copy that file anywhere in your $PATH
migro expects database migrations to be in
db/migrations (relative to the current directory).
Migration files can be named using one of the following patterns:
text_only.yml- text only, will be executed before everything else (in alphabetical order)
201802240803-some-text.yml- numeric prefix plus text, will be executed in order of the numeric prefix first, then alphabetical order if same numeric prefix
migro currently only supports YAML migrations of the form
metadata: version: 0.1 changes: - create_table: name: users columns: - name: id type: SERIAL null: false primary: true - name: username type: VARCHAR size: 40 null: false - name: password_hash type: CHAR size: 128 null: false up: - insert: table: users rows: - username: system - password_hash: b37e50cedcd3e3f1ff64f4afc0422084ae694253cf399326868e07a35f4a45fb
Which is equivalent to running the following SQL commands:
CREATE TABLE users (id SERIAL NOT NULL PRIMARY KEY, username VARCHAR(40) NOT NULL, password_hash CHAR(128) NOT NULL); INSERT INTO users (username, password_hash) VALUES ('system', 'b37e50cedcd3e3f1ff64f4afc0422084ae694253cf399326868e07a35f4a45fb');
- [ ] Support for
- [ ] Improved CLI, e.g.
migro rollback --to 042-some.yml
- Fork it ( https://github.com/aisrael/migro/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
- aisrael Alistair A. Israel - creator, maintainer