migrations/Version20260917145645.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * form_lead_data.label y group_label pasan de VARCHAR(255) a LONGTEXT.
  8.  *
  9.  * Los enunciados del cuestionario de la Carta de la Diversidad llegan a pasar de 300
  10.  * caracteres (la pregunta 20 tiene 333 y la 36, 290, en la redacción del documento de
  11.  * especificación). Con sql_mode estricto, un INSERT más largo que la columna no recorta el
  12.  * texto: lanza SQLSTATE[22001] 1406 Data too long y aborta el envío del formulario entero.
  13.  *
  14.  * Se elige LONGTEXT y no un VARCHAR más ancho porque ninguna de las dos columnas está
  15.  * indexada, `value` en esta misma tabla ya es LONGTEXT, y un varchar más ancho solo movería
  16.  * el techo arbitrario en lugar de quitarlo.
  17.  */
  18. final class Version20260917145645 extends AbstractMigration
  19. {
  20.     public function getDescription(): string
  21.     {
  22.         return 'form_lead_data.label y group_label a LONGTEXT: los enunciados del cuestionario no caben en 255';
  23.     }
  24.     public function up(Schema $schema): void
  25.     {
  26.         $this->addSql('ALTER TABLE form_lead_data CHANGE label label LONGTEXT NOT NULL, CHANGE group_label group_label LONGTEXT NOT NULL');
  27.     }
  28.     /**
  29.      * Ojo: revertir es destructivo si ya hay etiquetas de más de 255 caracteres. Con sql_mode
  30.      * estricto el ALTER fallará en lugar de truncarlas, que es el comportamiento deseable.
  31.      */
  32.     public function down(Schema $schema): void
  33.     {
  34.         $this->addSql('ALTER TABLE form_lead_data CHANGE label label VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, CHANGE group_label group_label VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`');
  35.     }
  36. }