Ответ 1
Задав столбец как VARCHAR(500)
, вы установили ограничение на 500 символов. Возможно, вы не сделали этого самостоятельно, но Django сделал это для вас где-то. Рассказывать о том, где сложно, когда вы не показали свою модель, полный текст ошибки или запрос, вызвавший ошибку.
Если вы этого не хотите, используйте неквалифицированный VARCHAR
или используйте тип TEXT
.
VARCHAR
и TEXT
ограничены по длине только системными ограничениями на размер столбца - около 1 ГБ - и вашей памятью. Однако добавление определителя длины в VARCHAR
устанавливает меньший предел вручную. Все следующие в основном эквивалентны:
column_name VARCHAR(500)
column_name VARCHAR CHECK (length(column_name) <= 500)
column_name TEXT CHECK (length(column_name) <= 500)
Единственные различия в том, как сообщаются метаданные базы данных и какой SQLSTATE возникает при нарушении ограничений.
Ограничение длины обычно не выполняется в подготовленных параметрах оператора, вызовах функций и т.д., как показано:
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
а в явных выражениях это приводит к усечению:
regress=> SELECT repeat('x',501)::varchar(1);
-[ RECORD 1 ]
repeat | x
поэтому я думаю, что вы используете столбец VARCHAR(500)
, и вы смотрите на неправильную таблицу или неверный экземпляр базы данных.