Skip to content Skip to sidebar Skip to footer

Django + Postgres: A String Literal Cannot Contain Nul (0x00) Characters

I'm syncing a large amount of data and I'm getting this error back: A string literal cannot contain NUL (0x00) characters. Obviously this is a postgres problem, but I'm not quite s

Solution 1:

This bug fix suggests:

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

Only the .replace is necessary for the OP's issue, which replaces the null with a � character. I've included .decode too as it protects against other encoding issues that might arise in similar situations.

This would go in a .clean method somewhere - maybe subclass TextField or CharField if you want to apply it globally.

Solution 2:

Unless you definitely do want to store NUL characters, you should sanitize your text so it does not contain them. At the model level, you'd define a clean_fieldname method to do that.

If you do want to store them, you need to store them in a binary-compatible field in the database. Django 1.6+ has BinaryField which should work.

Post a Comment for "Django + Postgres: A String Literal Cannot Contain Nul (0x00) Characters"