Terbium-135
After reading this:
I tried to use term_to_binary together with postgresql:
Migration:
[...]
add :owner, :text
add :version, :text
add :state, :bytea
[...]
Schema:
[...]
field :state, :binary
[...]
Code:
update_or_insert(%State{owner: owner, state: :erlang.term_to_binary(state)})
def update_or_insert(state) do
state
|> Repo.insert(
on_conflict: {:replace_all_except, [:id, :owner, :created_at]},
conflict_target: [:owner],
set: [updated_at: DateTime.utc_now()]
)
end
Error:
07:11:53.186 [error] GenServer #PID<0.15770.0> terminating
** (Postgrex.Error) ERROR 22021 (character_not_in_repertoire) invalid byte sequence for encoding "UTF8": 0x83
How to solve this?
Change encoding for the resulting binary?
Leave term_to_binary alone and use JSON encoding/decoding?
I was also looking at the docs for erlang term_to_binary but there are only compression levels mentioned
Trending in Questions
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
Other Trending Topics
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #performance











Showing Posts 1 to 5- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
jhogberg
term_to_binary/1,2produces a binary in the external term format, not a UTF-8-encoded binary, so this seems like a problem with the schema (by the looks of it on the database server side). Try looking into whyfield :state, :binaryimplies UTF-8 encoding.kip
My guess is that its resulting from an encoding error in either the
ownerorversionfields since the Postgrestexttype maps to ElixirString.ttype - which is UTF-8. Therefore one possible cause is that that either the Postgres database or the database connection string are set to LATIN-9 or some other non-UTF-8 encoding.The
byteatype maps to Elixir/erlangbinaryas you have configured.rvirding
I still mainly do Erlang courses but I play with Elixir as well.
rvirding
Yes, the ETF is an internal format and is definitely not UTF-8 encoded.
Terbium-135
Thanks for chiming in @jhogberg and @kip!
This was interesting to solve.
The DB is set to UTF8:
While I was trying to narrow down the problem I got a different error message:
Which leads to the real problem
The table has a trigger attached - and that trigger is converting the updated/inserted table row to JSON to send a message using
pg_notify=> trying to convert the binary data…And I was able to verify it as soon as I had a look at the postgresql log files
Never thought of this