hetzerok / sam
适用于MySQL的独立迁移。无需ORM。无需手动创建模式。
Requires
- php: >=5.5.9
- monolog/monolog: ^1.23
- symfony/console: ^3.2
This package is not auto-updated.
Last update: 2024-09-29 01:38:04 UTC
README
描述
该组件用于创建和管理数据库迁移,无需依赖任何框架。支持MySQL 5.5+,使用PHP 5.5+。允许使用熟悉的工具处理MySQL,然后根据现有表生成迁移文件。以后可以从这些文件中完全恢复数据库结构或数据到任何先前创建的版本。
安装和配置
从源代码安装
- 下载组件文件或克隆仓库。
- 运行
composer update
命令以安装依赖。 - 根据
config.inc.sample.php
文件创建config.inc.php
文件,使用自己的配置。 - ...profit
通过composer安装
-
执行
composer require hetzerok/sam
命令 - 结果将安装组件及其所有依赖项。 -
将
vendor/hetzerok/sam/run.php
文件复制到便于启动的位置。 -
根据
vendor/hetzerok/sam/config/config.inc.sample.php
文件创建config.inc.php
文件,使用自己的设置并将其放置在便于访问的目录中。 -
修改
run.php
文件第9行
require __DIR__.'/vendor/autoload.php';
写入自动加载器的路径。
第17行
$config = Config::getInstance('config/');
写入
config.inc.php
文件的路径。
命令
要使用CLI,需要通过控制台运行 run.php
文件。启动时会显示一组可用的命令。
migrations:initialize
- 初始化迁移系统并创建第一个迁移。migrations:generate
- 创建迁移(除了初始化迁移)migrations:migrate
- 应用迁移。接受--last
选项,通过它传递最后要应用的迁移的键。
工作流程
您安装组件,使用 migrations:initialize
命令初始化系统,以任何方便的方式修改数据库。当需要固定开发阶段时,使用 migrations:generate
命令。可以使用VCS或以任何方便的方式存储迁移。需要更新结构时,使用 migrations:migrate
命令。
在 config.inc.php
文件中的设置
数据库连接参数
username
- 数据库用户名password
- 数据库用户密码dsn
- 使用PDO连接数据库的DSN字符串
通用参数
import_data
- (0|1) - 标志,如果启用,允许使用迁移处理数据table_prefix
- 表前缀。只有具有指定前缀的表将被添加到迁移中。conside_foreign_keys
- (0|1) - 标志,是否在迁移中考虑外键。conside_indexes
- (0|1) - 标志,是否在迁移中考虑索引。
路径和格式
migration_path
- 迁移目录的路径schema_path
- 方案目录的路径(和方案数据)data_path
- 数据迁移目录的路径version_format
- (json) - 保存版本文件的格式schema_format
- (json) - 保存方案文件的格式migration_format
- (json) - 保存迁移文件的格式time_format
- 迁移命名的时间格式local_version_file
- 本地版本文件的路径(无扩展名)global_version_file
- 全球版本文件的路径(无扩展名)log_path
- 日志文件的路径log_file
- 日志文件名
列表
import_data_tables
- 创建数据迁移的表列表。必须明确指定需要此类迁移的表(无前缀)。
.gitignore
如果使用 VCS GIT,建议您适当地配置您的 .gitignore
文件。一般情况下,忽略 config.inc.php
文件,但保留 config.inc.sample.php
文件作为示例。同时忽略以 local 开头的方案和版本文件。此外,也要忽略日志文件。
功能和问题
- 仅考虑配置中指定的前缀的表,如果不使用前缀,请将配置值
table_prefix
设置为空字符串。 - 为了能够重命名表和列,请给它们添加注释。例如:您想将
users
表重命名为my_users
。首先给表(任意一个)添加注释,然后执行migrations:generate
命令,接着重命名表,再次执行migrations:generate
命令。否则,将删除users
表并创建my_users
表。 - 建议在具有主键的表上使用数据迁移。这可以加快查询速度并节省空间,因为在这样的情况下,可以通过主键唯一地识别一条记录。
- 目前,组件仅支持 utf-8 编码,并在连接数据库时强制设置命令
SET NAMES utf-8