allenjb / migrationmanager
一个简单、无框架依赖、不可逆的MySQL迁移库,接受预先配置的PDO连接
2.0.4
2018-08-01 08:22 UTC
Requires
- php: ~7.1
README
一个简单、无框架依赖、不可逆的MySQL迁移库,接受预先配置的PDO连接(允许您预先设置所需的连接配置,如sql_mode或时区,以及您自己的错误处理)。
为什么?我看了其他迁移库,但它们都有大量关于MySQL语言支持和回滚的问题,或者控制MySQL连接(例如,时区,sql_mode)是问题,因为它们控制着连接的创建。虽然我可以尝试强制不使用这些有问题的功能,但如果它们一开始就不存在,那就容易多了。
版本
使用版本1以兼容PHP 5.6。2+版本需要PHP 7.1+
安装
通过Composer
$ composer require allenjb/migrationmanager
用法
$pdo = new \PDO(...); $pathToMigrations = "../db/migrations/"; $migrationsTable = 'migrations'; $manager = new AllenJB\MigrationManager($pdo, $pathToMigrations, $migrationsTable); // List migrations print_r ($manager->executedMigrations()); print_r ($manager->migrationsToExecute()); print_r ($manager->futureMigrations()); // Perform pending migrations $manager->executeMigrations(); // You MUST call when you've finished using the manager to release all locks $manager->unlock();
迁移文件
文件名必须符合YYYYMMDD_HHmm_ClassName.php的格式
时间以24小时制表示。
类名必须唯一。
如果日期大于今天(不考虑时间),则迁移将在该日期之前不执行。这允许您安排将来的迁移(例如,您正在删除字段,但希望将其保留在数据库中一段时间以防止数据丢失/代码回滚)。
<?php declare(strict_types = 1); // example filename: 20170330_1100_Initialize.php use AllenJB\MigrationManager\AbstractMigration; class Initialize extends AbstractMigration { public function up() : void { // Execute your changes here, using $this->db to access the PDO connection } }
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。