簡體   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