使用 pycassa 在 cassandra 中插入数据时出现编码问题。字段名称是“文本”,内容是可以包含非 ascii 字符的推文。我尝试使用 encode('UTF-8') 对文本字段进行编码,它显示,从 'unicode' 转换为 'str' 但仍然失败?确切的错误在这里,
-'ascii' codec can't encode character u'\xbf' in position 0: ordinal not in range(128).
-'ascii' codec can't encode character u'\2026' in position 139: ordinal not in range(128).
编辑 1:对于在 Cassandra 中失败的字段,是否未定义默认验证器类型?这会是个问题吗?如果未指定类型,cassandra 会将其存储为什么?
编辑2:这回答了编辑1。刚刚注意到一些事情,它失败的字段没有定义默认类型,并且根据文档,cassandra将尝试将其存储为十六进制字节数组(ByteType),因为我正在尝试插入UTF- 8 编码的字符串,这可能是个问题吗?
追溯:
Traceback(最近一次调用最后一次):文件“/opt/socialflow/prod/api-reporting/api-reporting/CassFH/app/c.py”,第 40 行,在 send Mutator.send(self, *a, ** kw)文件“/usr/local/lib/python2.6/dist-packages/pycassa/batch.py”,第 126 行,在发送 allow_retries=self.allow_retries)
文件“/usr/local/lib/python2.6/dist-packages/pycassa/pool.py”,第 124 行,在 new_f 结果 = f(self, *args, **kwargs)
文件“/usr/local/lib /python2.6/dist-packages/pycassa/cassandra/Cassandra.py”,第 1005 行,在 batch_mutate self.send_batch_mutate(mutation_map,consistency_level)
文件“/usr/local/lib/python2.6/dist-packages/pycassa/ cassandra/Cassandra.py”,第 1013 行,在 send_batch_mutate args.write(self._oprot)
文件“/usr/local/lib/python2.6/dist-packages/pycassa/cassandra/Cassandra.py”,第 5200 行,在写 oprot.trans.write(fastbinary.encode_binary(self, (self.class , self.thrift_spec )))UnicodeEncodeError: 'ascii' codec can't encode character u'\xbf' in position 0: ordinal not in range(128 )[2013-05-20 21:31:14,450]根关键: