Saltar al contenido

Extraño PostgreSQL “valor demasiado largo para el tipo de carácter variable (500)”

Solución:

Especificando la columna como VARCHAR(500) ha establecido un límite explícito de 500 caracteres. Puede que no lo hayas hecho tú mismo explícitamente, pero Django lo ha hecho por ti en alguna parte. Decirle dónde es difícil cuando no ha mostrado su modelo, el texto completo del error o la consulta que produjo el error.

Si no quiere uno, use un no calificado VARCHAR, o use el TEXT escribe.

varchar y text están limitados en longitud solo por los límites del sistema en el tamaño de la columna (aproximadamente 1 GB) y por su memoria. Sin embargo, agregar un calificador de longitud a varchar establece un límite más pequeño manualmente. Todos los siguientes son en gran parte equivalentes:

column_name VARCHAR(500)

column_name VARCHAR CHECK (length(column_name) <= 500) 

column_name TEXT CHECK (length(column_name) <= 500) 

Las únicas diferencias están en cómo se informan los metadatos de la base de datos y qué SQLSTATE se genera cuando se infringe la restricción.

La restricción de longitud generalmente no se obedece en los parámetros de declaración preparados, llamadas a funciones, etc., como se muestra:

regress=> x
Expanded display is on.
regress=> PREPARE t2(varchar(500)) AS SELECT $1;
PREPARE
regress=> EXECUTE t2( repeat('x',601) );
-[ RECORD 1 ]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
?column? | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

y en conversiones explícitas resulta en truncamiento:

regress=> SELECT repeat('x',501)::varchar(1);
-[ RECORD 1 ]
repeat | x

entonces yo creo que tu están usando un VARCHAR(500) columna, y está viendo la tabla incorrecta o la instancia incorrecta de la base de datos.

La variación de caracteres es diferente al texto. Intenta correr

ALTER TABLE product_product ALTER COLUMN code TYPE text;

Eso cambiará el tipo de columna a texto, que se limita a una gran cantidad de datos (probablemente nunca lo alcanzaría).

Tuvimos este mismo problema. Lo solucionamos agregando ‘longitud’ a la definición de atributo de entidad:

@Column(columnDefinition="text", length=10485760)
private String configFileXml = ""; 
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *