Database Migration
A simple, framework-agnostic database migration tool that uses pure SQL commands for versioning your database.
Key Features
- Pure SQL Migrations - Use native SQL commands instead of framework-specific code
- Multiple Database Support - Works with MySQL, PostgreSQL, SQLite, and SQL Server
- Framework Independent - Can be used with any PHP framework or standalone
- CLI & Library Support - Use as a command-line tool or integrate into your PHP application
- Transaction Support - Ensures database consistency (where supported)
- Multi-Developer Friendly - Supports parallel development with -dev suffixed versions
Quick Start
Installation
composer require "byjg/migration"
CLI Usage
The package includes a built-in CLI tool:
# Show current database version
vendor/bin/migrate version --connection mysql://user:pass@localhost/database
# Update database to latest version
vendor/bin/migrate update --connection mysql://user:pass@localhost/database --path ./migrations
# Reset database and run all migrations
vendor/bin/migrate reset -c mysql://user:pass@localhost/database -p ./migrations
See CLI Usage for complete documentation.
Library Usage
<?php
$connectionUri = new \ByJG\Util\Uri('mysql://user:pass@localhost/database');
\ByJG\DbMigration\Migration::registerDatabase(\ByJG\DbMigration\Database\MySqlDatabase::class);
$migration = new \ByJG\DbMigration\Migration($connectionUri, '.');
$migration->update();
Documentation
For detailed documentation, please visit:
- Getting Started - Basic concepts and setup
- Database Setup - Configure your database connection
- Migration Scripts - Writing and organizing migrations
- CLI Usage - Command line interface guide
- API Reference - Complete API documentation
Supported Databases
- MySQL/MariaDB
- PostgreSQL
- SQLite
- SQL Server (Windows and Linux)
For connection strings and specific database setup, see our database documentation.