Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/harish2704/simple-db-migrator
A simple database migration tool written in PHP
https://github.com/harish2704/simple-db-migrator
database-migration migration-tool php-migration
Last synced: 2 days ago
JSON representation
A simple database migration tool written in PHP
- Host: GitHub
- URL: https://github.com/harish2704/simple-db-migrator
- Owner: harish2704
- License: mit
- Created: 2022-07-25T17:40:18.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-19T11:40:12.000Z (over 2 years ago)
- Last Synced: 2024-11-17T18:20:58.776Z (2 months ago)
- Topics: database-migration, migration-tool, php-migration
- Language: PHP
- Homepage:
- Size: 22.5 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simple-db-migrator
A simple database migration tool written in PHP# Quick introduction.
1. This is a simple database migration commandline application written in php.
2. Contents of each SQL file is run as single transaction.
3. The migrator tool will save the `down` migration (rollback SQL statement) in DB and cross verify it with the current version of the rollback SQL statement present in the disk and complain if both are different.# Usage
Migrations are arranged in the following directory structure.
```
├── migrations
│ ├── down
│ │ ├── 001.sql
│ │ ├── 002.sql
│ │ ├── 003.sql
│ │ └── 004.sql
│ └── up
│ ├── 001.sql
│ ├── 002.sql
│ ├── 003.sql
│ └── 004.sql
└── simple-db-migrator.php```
To create a new migration, Just create respective `xxx.sql` file in `up` and `down` directories.
## Run initial migration ( ie, create db_migration table )
```bash
# '-s' option stands for 'setup'
php simple-db-migrator.php -s
```## Show status ( last completed migration and pending migrations )
```bash
php simple-db-migrator.php -l
```## Apply all pending migrations ( up )
```bash
php simple-db-migrator.php
```## Rollback last migration ( down )
```bash
php simple-db-migrator.php -d
```## Show help
```
$ php simple-db-migrator.php -h
Description:
A simple database migration toolUsage:
php simple-db-migrator.php [options]Options:
-l, --list Show the current status of applied migrations
-s, --setup Create db_migrations table in db and run all pending migrations
-d, --down Roll back last migration
-h, --help Display help for the given command. When no command is given display help for the db:migrate command
-v|vv|vvv, --verbose Increase the verbosity of messages: 1-3 => info,log,debug
```# Supported RDBMS
Tested with Mysql , PostgreSQL and Sqlite# Cavets
1. From [php docs](https://www.php.net/manual/en/pdo.begintransaction.php), "Some databases, including MySQL, automatically issue an implicit COMMIT when a database definition language (DDL) statement such as DROP TABLE or CREATE TABLE is issued within a transaction. The implicit COMMIT will prevent you from rolling back any other changes within the transaction boundary."
2. history of completed up/down migrations will be stored in a table called `db_migrations` . By default, this table is created with default encoding of active database . So if your database's default encoding is not utf-8 and you are planing to write some utf-8 string in the migration file, then you need to manually fix the encoding of `db_migrations` table . otherwise, migration tool will fail to save the hisotry of migration ( ie, content of up/down SQL file ) in db.
- I am not integrating this feature into the tool for the sake of simplicity
- it will be better to apply these "alter table" commands as a new migration.