Isso acabou sendo causado por um bug no
persistent-mysql pacote que agora está corrigido em persistent-mysql-2.3 . Aqui está a causa raiz para os interessados:
A biblioteca MySQL C (e por extensão o Haskell
mysql pacote, que persistent-mysql depende) não distingue entre dados binários e textuais no nível do tipo. Então, se você salvou um TEXT valor para o banco de dados, quando foi pesquisado por persistente, parecia ser dados binários (um PersistByteString ). Isso foi corrigido em #451 verificando o conjunto de caracteres da coluna, que os documentos da API do MySQL recomendam como a solução apropriada.
Para obter mais detalhes, consulte essa solicitação pull ou este problema .
Obrigado por fazer esta pergunta; Eu não teria percebido que havia um bug de outra forma.