繁体   English   中英

Django + Postgres:字符串文字不能包含 NUL (0x00) 字符

[英]Django + Postgres: A string literal cannot contain NUL (0x00) characters

我正在同步大量数据,但出现此错误: A string literal cannot contain NUL (0x00) characters. 显然这是一个 postgres 问题,但我不太确定如何解决它。 有没有办法在 Django 模型级别去除空字符? 我有一大堆要同步的字段。

此错误修复建议:

s.decode("utf-8", errors="replace").replace("\x00", "\uFFFD")

对于 OP 的问题,只有.replace是必需的,它将用 字符替换空值。 我也包含了.decode因为它可以防止在类似情况下可能出现的其他编码问题。

这将在某处使用.clean方法 - 如果您想全局应用它,可能是 TextField 或 CharField 的子类。

除非您确实想要存储 NUL 字符,否则您应该清理您的文本,使其不包含它们。 在模型级别,您将定义一个clean_fieldname方法来执行此操作。

如果确实要存储它们,则需要将它们存储在数据库中的二进制兼容字段中。 Django 1.6+ 有BinaryField应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM