将文本列转换为二进制数据类型时失败

时间:2018-06-13 14:52:08

标签: django python-2.7 psql

我的数据库中有一个文本列,用于存储pickled python数据。这当然成了一个问题,因为这个腌制数据在被存储时被解码为UTF-8,偶尔会引起问题。

我想将列的类型更改为二进制数据类型bytea以正确存储此数据。为了测试所有当前存储的数据是否可以转换,我运行了以下查询:

SELECT text_column::bytea as result FROM table;

哪个没有问题。但是,尝试使用查询来更改列的类型:

ALTER TABLE table ALTER COLUMN text_column TYPE bytea USING text_column::bytea;

导致错误:

ERROR: invalid input syntax for type bytea

类似地:

ALTER TABLE table ALTER COLUMN text_column TYPE bytea USING CAST(text_column AS bytea);

为了测试这实际上是一个语法错误我转换为文本没有任何问题:

ALTER TABLE table ALTER COLUMN text_column TYPE text USING CAST(text_column AS text);

此时我还不确定在选择结果时如果我可以毫无问题地投射,问题是什么。该列没有默认值。我现在唯一的想法是创建一个包含已转换值的临时表,删除列,将其作为bytea列添加回来并返回已转换的值。但我仍然想知道原始语法错误的原因是什么?

0 个答案:

没有答案