适用于MySQL的独立迁移。无需ORM。无需手动创建模式。

0.0.5 2017-06-27 16:53 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:38:04 UTC


README

描述

该组件用于创建和管理数据库迁移,无需依赖任何框架。支持MySQL 5.5+,使用PHP 5.5+。允许使用熟悉的工具处理MySQL,然后根据现有表生成迁移文件。以后可以从这些文件中完全恢复数据库结构或数据到任何先前创建的版本。

安装和配置

从源代码安装

  1. 下载组件文件或克隆仓库。
  2. 运行 composer update 命令以安装依赖。
  3. 根据 config.inc.sample.php 文件创建 config.inc.php 文件,使用自己的配置。
  4. ...profit

通过composer安装

  1. 执行 composer require hetzerok/sam 命令 - 结果将安装组件及其所有依赖项。

  2. vendor/hetzerok/sam/run.php 文件复制到便于启动的位置。

  3. 根据 vendor/hetzerok/sam/config/config.inc.sample.php 文件创建 config.inc.php 文件,使用自己的设置并将其放置在便于访问的目录中。

  4. 修改 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