You saw it in the logs before the alerts fired. The report blocked because the schema had no room for the new facts you needed to store. You needed a new column.
Adding a new column should be simple, but in production systems it carries risk. Schema changes can lock tables, block writes, and cascade failures through dependent services. The difference between a controlled migration and a meltdown is in the execution.
First, define the new column with precise data types. Avoid generic types like TEXT or VARCHAR(max) unless they are part of a deliberate design. Use NULL or default values to keep the migration backward-compatible. Time your deployment so that schema changes run during low-traffic windows or through online DDL operations.
In PostgreSQL, ALTER TABLE ... ADD COLUMN is fast if the column is nullable with no default. If you need defaults, set them in application code first, backfill in batches, and then enforce constraints. In MySQL, choose ALGORITHM=INPLACE if supported, or break the change into multiple safe steps. For distributed databases, coordinate column additions with rolling application deploys to avoid deserialization errors.