首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >webman数据库迁移工具插件Phinx

webman数据库迁移工具插件Phinx

作者头像
Tinywan
发布于 2024-11-21 10:46:22
发布于 2024-11-21 10:46:22
21000
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

概述

使用数据库迁移工具可以将数据库结构和数据很容易的在不同的数据库之间管理迁移。

在以前,为了实现程序安装,你可能会导出一份 SQL 文件,安装时,用程序解析这个 SQL 文件,执行里面的语句,这样做有诸多的局限性,但现在使用数据库迁移工具,你可使用一个强大的类库API来创建数据库结构和记录,并且可以容易的安装到Mysql、sqlite、sqlserver等数据库。

Phinx 可以让开发者简洁的修改和维护数据库。它避免了人为的手写 SQL 语句,它使用强大的 PHP API 去管理数据库迁移。开发者可以使用版本控制管理他们的数据库迁移。Phinx 可以方便的进行不同数据库之间数据迁移。还可以追踪到哪些迁移脚本被执行,开发者可以不再担心数据库的状态从而更加关注如何编写出更好的系统。

Phinx官方文档:https://tsy12321.gitbooks.io/phinx-doc/content/

安装

通过composer安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
composer require webman-micro/migrations

插件地址:https://www.workerman.net/plugin/170

配置

插件配置目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
|-- config                          # webman 配置文件
    |-- plugin
        |-- webman-micro
            |-- migrations
                |-- app.php          # 主配置信息
                |-- command.php      # 自定命令   

主配置信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
return [
    'enable' => true,
    "paths" => [
        "migrations" => "database/migrations", // 迁移文件存储路径
        "seeds" => "database/seeders" // 迁移数据文件存在路径
    ],
    "environments" => [
        "default_migration_table" => "phinxlog", // 迁移记录表
        "default_environment" => "product", // 默认使用的环境配置
        "product" => [
            "adapter" => "mysql", // 使用mysql 配置
            "host" => getenv("DB_HOST", '127.0.0.1'),
            "name" => getenv("DB_NAME", ''),
            "user" => getenv("DB_USER", ''),
            "pass" => getenv("DB_PASSWORD", ''),
            "port" => getenv("DB_PORT", '3306'),
            "charset" => "utf8"
        ]
    ]
];

迁移文件目录结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
├── app                           应用目录
│   ├── controller                控制器目录
│   │   └── Index.php             控制器
│   ├── model                     模型目录
......
├── database                      数据库文件
│   ├── migrations                迁移文件
│   │   └── 20241111120726_tinywan_user_table.php
│   ├── seeders                   迁移数据
│   │   └── UserSeeder.php
......

命令行

migrations 迁移文件命令

命令

说明

php webman migrations:breakpoint

设置断点

php webman migrations:create

创建迁移脚本文件

php webman migrations:list_aliases

列出模板类别名

php webman migrations:migrate

运行执行所有脚本

php webman migrations:rollback

回滚之前的迁移脚本,与 Migrate 命令相反

php webman migrations:status

打印所有迁移脚本和他们的状态

php webman migrations:test

验证配置文件

Breakpoint 命令

Breakpoint 命令用来设置断点,可以使你对回滚进行限制。你可以调用 breakpoint 命令不带任何参数,即将断点设在最新的迁移脚本上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:breakpoint -e development

可以使用 --target 或者 -t 来指定断点打到哪个迁移版本上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:breakpoint -e development -t 20120103083322

可以使用 --remove-all 或者-r 来移除所有断点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:breakpoint -e development -r

当你运行 status 命令时可以看到断点信息

Create 命令

create 命令用来创建迁移脚本文件。需要一个参数:脚本名。迁移脚本命名应该保持 驼峰命名法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:create MyNewMigration

打开新创建的迁移脚本并编写数据库修改。Phinx 把迁移脚本创建到 phinx.yml 里面指定的路径。更多信息参考配置

你可以重写模板文件,并在创建的时候指定模板

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:create MyNewMigration --template="<file>"

可以提供一个模板类,这个类必须继承接口 Phinx\Migration\CreationInterface

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:create MyNewMigration --class="<class>"

提供的模板中,类中也可以定义回调,这个回调将在迁移脚本生成的时候被调用

注意:你不能同时使用 --template--class

Migrate 命令

Migrate 命令默认运行执行所有脚本,可选指定环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:migrate -e development

可以使用 --target 或者 -t 来指定执行某个迁移脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:migrate -e development -t 20110103081132

Rollback 命令

Rollback 命令用来回滚之前的迁移脚本。与 Migrate 命令相反。

你可以使用 rollback 命令回滚上一个迁移脚本。不带任何参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:rollback -e development

使用 --target 或者 -t 回滚指定版本迁移脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:rollback -e development -t 20120103083322

指定版本如果设置为0则回滚所有脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:rollback -e development -t 0

可以使用 --date 或者 -d 参数回滚指定日期的脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:rollback -e development -d 2012
$ php webman migrations:rollback -e development -d 201201
$ php webman migrations:rollback -e development -d 20120103
$ php webman migrations:rollback -e development -d 2012010312
$ php webman migrations:rollback -e development -d 201201031205
$ php webman migrations:rollback -e development -d 20120103120530

如果断点阻塞了回滚,你可以使用 --force 或者-f参数强制回滚

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:rollback -e development -t 0 -f

Status 命令

Status 命令可以打印所有迁移脚本和他们的状态。你可以用这个命令来看哪些脚本被运行过了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ php webman migrations:status -e development

当所有脚本都已经执行(up)该命令将退出并返回 0

  • 1:至少有一个回滚过的脚本(down)
  • 2:至少有一个未执行的脚本

Seed 数据填充文件命令

命令

说明

php webman seed:create

创建 seed 类

php webman seed:run

执行所有 seed

Seed Create 命令

Seed Create 命令可以被用来创建 seed 类。需要一个类名参数。命名格式使用驼峰法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php webman seed:create MyNewSeeder

Seed Run 命令

默认Seed run 命令会执行所有 seed。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php webman seed:run -e development

如果你想要指定执行一个,只要增加 -s 参数并接 seed 的名字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php webman seed:run -e development -s MyNewSeeder
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 安装
  • 配置
  • 命令行
    • migrations 迁移文件命令
    • Breakpoint 命令
    • Create 命令
    • Migrate 命令
    • Rollback 命令
    • Status 命令
  • Seed 数据填充文件命令
    • Seed Create 命令
    • Seed Run 命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档