Webman本身不支持数据库迁移,需集成Phinx并配置插件或手动注册命令;直接运行vendor/bin/phinx报“No config file found”是因为工作目录错误、未加载Webman配置且database.php结构不兼容Phinx。
Webman 本身不带数据库迁移能力,必须靠 Phinx + 插件或手动集成才能用;直接后运行会报—— 根本原因是工作目录不对、配置没加载、Webman 的结构也不被 Phinx 原生识别。
为什么 php
webman
migrate 命令不存在
Webman 没有内置 migration 命令入口,
插件只是封装了 Phinx,但前提是它得能正确加载配置。常见失败点:
插件未启用:检查
中
是否存在
Phinx 配置文件缺失或路径错误:插件默认只认项目根目录下的
,若你用的是
,必须在插件配置里显式指定路径
命令未注册:插件只提供
这类命令,但 Webman 的 console 系统需通过
才能识别,否则命令根本不会出现在
里
如何让 phinx.php 正确读取 Webman 的 database 配置
不能硬编码数据库参数,必须复用
里的多环境配置(尤其是
变量)。关键步骤是手动映射字段:
在项目根目录创建
,开头
和
从
(或你实际用的连接名)中提取字段,转成 Phinx 要求的
结构
注意字段名差异:
→
,
→
,
→
,
→
,
→
Docker 环境下
必须填容器名(如
),不能写
迁移文件命名和编写要注意什么
Phinx 对文件名敏感,一旦提交到 Git 就禁止修改内容,否则不同环境执行顺序错乱或报错:
Midjourney AI 提示词工具
PHP中文网提供Midjourney AI 提示词在线生成工具,专为解决 AI 绘画“词穷”痛点而生,用户只需输入“一只猫”等简单想法,工具便能利用 AI 智能扩展出包含艺术风格、光影构图、镜头参数及负面提示词的专业级英文 Prompt。它完美兼容 Midjourney V8.1 及 Niji 模型,支持一键复制与参数自动优化,大幅降低创作门槛,是提升出图质量与效率的必备辅助神器。
下载
命名格式必须为
,例如
方法写正向变更(如
),
写逆向操作(如
)
不要在迁移里调用业务模型或服务类 —— 迁移应只操作结构,不依赖运行时上下文
新增字段带默认值时,MySQL 5.7+ 要求显式加
,否则可能因 strict mode 报错
执行迁移时最常见的卡点
命令看似跑通,但表没建、日志没记录、回滚失效,往往卡在这些细节上:
执行后无输出?检查
里
路径是否指向
,且该目录存在并可写
提示
?不是数据库挂了,而是
里
写成了
,而 Webman 容器内无法解析
执行
失败?确认
方法逻辑完整,比如删表操作不能只写
,还要确保表存在(加
)
多个数据库连接怎么选?Phinx 默认只用
,如需切换,得在
里定义
环境,并用
显式指定
最易被忽略的一点:Phinx 的
表(记录已执行迁移)默认建在
环境库中。如果你的生产库和开发库完全隔离,就得在
里为
单独配
,否则上线后迁移状态会混乱。
composer require robmorgan/phinxvendor/bin/phinxNo config file foundconfig/database.phpx2nx/webman-migrateconfig/plugin/x2nx/webman-migrate/app.php'enable' => truephinx.ymlphinx.phpphp webman migrateCommands::add()php webman listconfig/database.php.envphinx.phprequire vendor/autoload.phprequire config/database.php$config['connections']['mysql']environments.dev'host''host''database''name''username''user''password''pass''port''port'hostmysqllocalhostYYYYMMDDHHIISS_describe_action_table.php20260524102345_create_user_table.phpup()$table->addColumn('email', 'string')down()$table->removeColumn('email')->setDefault('')->nullable(false)php webman migratephinx.php'migrations'database/migrationsSQLSTATE[HY000] [2002] Connection refusedphinx.phphostlocalhostphp webman migrate:rollbackdown()$this->dropTable('user')if ($this->hasTable('user'))environments.devphinx.php'production'php webman migrate -e productionphinxlogdevphinx.phpproduction'migration_table' => 'phinxlog_prod'