Failed to create event: Mysql2::Error: Data too long for column 'sys' at row 1
Fix Plan: events.sys 컬럼 용량 부족으로 인한 share event 저장 실패
Background#
PUT /api/v1/facilities/:key/share 호출 시 Event 레코드 저장에서 events.sys 컬럼이 MySQL TEXT(65535 byte) 한계를 초과해 Mysql2::Error: Data too long for column 'sys' at row 1이 발생, share API가 400으로 실패한다. RCA의 "즉시 조치 (Critical)" 항목 중 근본 수정안만 본 plan에 반영한다.
Changes#
tesla: db/migrate/{timestamp}_change_events_sys_to_mediumtext.rb (신규)#
- What:
events.sys컬럼을:text(TEXT, 65535 byte)에서 MEDIUMTEXT(:text+limit: 16.megabytes - 1)로 확장하는 신규 ActiveRecord 마이그레이션 파일을 추가한다. - Why: RCA Root Cause Summary에서 확인된 직접적 원인.
events.sys가 TEXT 한계여서 share 대상 사용자/그룹이 많은 facility에서 직렬화 페이로드가 한계를 초과해Mysql2::Error: Data too long을 일으킨다. MEDIUMTEXT(16 MB)로 확장하면 현재 보고된 페이로드 크기와 향후 증가 마진을 모두 수용할 수 있다. - Pattern: 직전 동일 패턴 마이그레이션(
db/migrate/20260529075321_change_bims_meta_to_mediumtext.rb)을 그대로 따른다 —change_column :events, :sys, :text, limit: 16.megabytes - 1(up) /change_column :events, :sys, :text(down). - Lines: 신규 파일 약 9 라인.
Scope Notes (의도적으로 제외)#
다음 항목들은 user가 선택한 "즉시 조치 (Critical)" 범위 밖이므로 본 plan에서 제외:
- "단기 완화" (EventFactory truncation 방어 코드): RCA에서 명시적으로 "동작 변화가 있으므로 영구 해법은 아니며 H1 수정과 함께 제거" — 본 마이그레이션이 영구 해법이므로 불필요.
- 단기 개선 1주 이내 (event_object_data 화이트리스트화, 85개 테이블 일괄 확장): 별도 작업으로 분리.
- 장기 개선 (외부 객체 저장소 이전, schema linter): 별도 작업으로 분리.
Acceptance Criteria#
-
db/migrate/에change_events_sys_to_mediumtext.rb로 끝나는 신규 마이그레이션 파일이 1개 존재. - 마이그레이션 파일의
up은change_column :events, :sys, :text, limit: 16.megabytes - 1호출을 포함. - 마이그레이션 파일의
down은change_column :events, :sys, :text호출을 포함(롤백 가능). - 마이그레이션 클래스가
ActiveRecord::Migration[7.2]을 상속(레퍼런스 마이그레이션과 동일한 Rails 버전). - 다른 파일(스키마, 모델, 컨트롤러 등) 변경 없음.
Tests#
- 기존 테스트: 변경된 파일이 마이그레이션 단일 파일이라 직접 대응되는 RSpec spec 없음(tesla migration은 spec 미보유 관행).
- 신규 테스트: 추가하지 않음 — 마이그레이션 단순 컬럼 타입 변경. 검증은 운영 ALTER 시점에
events.sys컬럼 타입이MEDIUMTEXT로 변경되었는지SHOW CREATE TABLE events로 확인.
Deployment Note#
운영 배포 시 events 테이블 크기가 큰 경우 ALTER가 길어질 수 있다. RCA에서 권고한 대로 온라인 DDL(ALGORITHM=INPLACE, LOCK=NONE) 가능 여부를 DBA가 사전 점검 후 배포한다. 본 PR은 마이그레이션 파일 자체만 제공하며, 운영 적용 전략은 PR 리뷰에서 별도 합의한다.