Skip to main content

Corregir un playbook de migración de base de datos inestable

Tu playbook de migración de base de datos funciona con esquemas simples, pero se rompe con claves foráneas. Pasa cuatro enlaces de sesiones a Advanced Devin y deja que cubra las lagunas.
AuthorCognition
CategoryDevin Optimization
FeaturesAdvanced, Playbooks
1

Detecta el patrón entre sesiones

Tu equipo ha estado usando el playbook !db-migration durante unas semanas. Ha manejado el cambio de nombre de columnas y la adición de índices sin problema, pero las dos últimas sesiones se bloquearon a mitad de la migración cuando intentaron eliminar una columna referenciada por otras tablas.Abre cada sesión y revisa el punto de fallo. En este caso, las sesiones 3 y 4 dieron error en el mismo paso:
ERROR: cannot drop column "account_id" because other objects depend on it
DETAIL: constraint fk_orders_account_id on table orders depends on column account_id
HINT: Use DROP ... CASCADE to drop dependent objects too.
Ahora tienes una señal clara: el playbook no tiene un paso para comprobar las dependencias de claves foráneas antes de operaciones destructivas. Dos sesiones tuvieron éxito porque afectaron a tablas independientes; dos fallaron porque no lo hicieron.
2

Abre la pestaña Improve Playbook con enlaces a sesiones

Ve a app.devin.ai y haz clic en Advanced debajo del cuadro de entrada. Selecciona la pestaña Improve Playbook.Elige !db-migration en el desplegable de playbooks y luego selecciona las cuatro sesiones en el session multi-dropdown, tanto las exitosas como las fallidas. Incluir sesiones exitosas permite que Devin vea en qué funciona bien el playbook, no solo dónde se rompe.Qué hace que este prompt sea eficaz:
  • Nombra el fallo exacto: “foreign key constraints” en lugar de “a veces falla”
  • Contrasta éxitos y fallos: Devin puede comparar las transcripciones de las sesiones para ver dónde divergen
  • Enumera correcciones concretas, dejando espacio para que Devin saque a la luz problemas que pasaste por alto
3

Revisa el diff del playbook

Devin lee las transcripciones de las cuatro sesiones, identifica dónde los fallos divergen de los éxitos y propone ediciones específicas. La salida se ve como un changelog de tu playbook:
## Analysis

Sessions 1-2 succeeded because they only modified tables with no
incoming foreign keys. Sessions 3-4 failed at step 4 ("Drop the
old column") because the orders and invoices tables had FK
references to the target column.

## Changes to !db-migration

Added step 3a: "Before any DROP or ALTER that removes a column,
  query information_schema.key_column_usage to list dependent FKs.
  If any exist, generate ALTER TABLE ... DROP CONSTRAINT statements
  and execute them first. Save the original constraint DDL for
  rollback."

Added step 7: "Rollback procedure — if any step after FK removal
  fails, re-create the dropped constraints using the saved DDL
  from step 3a."

Updated Advice section: "Always run the migration against a staging
  database first. FK chains can be deeper than expected — a column
  in table A may be referenced by B, which is referenced by C.
  Query recursively."
El playbook se guarda automáticamente. Si algo no encaja, responde en la misma sesión; por ejemplo: “Also add a step to notify the #database Slack channel before running destructive migrations.”
4

Verifica la corrección en una migración nueva

No necesitas salir de tu sesión actual de Advanced Devin. Una vez que se guarde la actualización del playbook, usa la misma sesión para iniciar una sesión estándar de Devin que pruebe el playbook actualizado contra el mismo escenario que falló antes:Si esta sesión tiene éxito, la corrección funciona. Si encuentra un nuevo caso límite (por ejemplo, referencias de FK circulares), vuelve a enviar esa sesión a la pestaña Improve Playbook para otra iteración.