Error de forma / base de datos de Django: valor demasiado largo para el tipo de carácter que varía (4)

Estoy tratando de guardar una identificación de la compañía de la franja (el servicio de facturación) [alrededor de 200 caracteres o menos] en mi base de datos en Django.

El error específico es:

database error: value too long for type character varying(4) 

¿Cómo puedo permitir que Django permita valores más largos?

Vi: el valor es demasiado largo para la variación de caracteres de tipo (N) y: el dispositivo Django falla, declarando “DatabaseError: el valor es demasiado largo para la variación de caracteres de tipo (50)”

Mi sistema específico es Webfaction, CentOs shared machine, Django ejecutándose en PostgreSQL. Realmente apreciaría una descripción conceptual de lo que está pasando y cómo puedo solucionarlo.

Sí, hacer la columna más ancha. El mensaje de error es bastante claro: sus 200 caracteres son demasiado grandes para caber en un varchar (4).

Primero, actualice los atributos de su modelo max_length de 4 a un número que espera que sea lo suficientemente largo como para contener los datos que está suministrando.

A continuación, debe actualizar la columna de la base de datos, ya que django no actualizará automáticamente las columnas existentes .

Aquí hay algunas opciones:

1: Suelte la base de datos y ejecute syncdb nuevamente. Advertencia: perderás todos tus datos.

2: Actualizar manualmente la columna a través de SQL.

Escriba python manage.py dbshell para acceder al shell de su base de datos y escriba

 ALTER TABLE my_table ALTER COLUMN my_column TYPE VARCHAR(200) 

3: Aprenda y use una herramienta de migración de base de datos como django south que le ayudará a mantener su base de datos actualizada con su código de modelo.

Usando Django 1.11 y Postgres 9.6 me encontré con esto, sin ninguna razón aparente.

Establecí max_length = 255 en el archivo de migración y ejecuté:

gestionar.py migrar

Luego, puse la longitud correcta en max_length del modelo y ejecuté otras migraciones y la migración se ejecutó nuevamente.