如何解决在 pg 列从文本到二进制 (bytea) 的 Rails 迁移中,如何解决“bytea 类型的输入序列无效”?
我有一个带有 pg 数据库的 Rails 应用程序,其中一个表中“输入”列的类型是文本。我发现我的一些输入文件不是任何特定的文本编码,因此需要将它们视为二进制数据。
因此,我创建了一个迁移:
#if __has_include(<unistd.h>)
// System is posix-compliant
#else
// System is not posix-compliant
#endif
但是,当我运行此迁移时,我得到:
class ChangeProgramsColumnsInputOutputToBinary < ActiveRecord::Migration[6.0]
def change
change_column :programs,:input,'bytea USING input::bytea'
end
end
Postgresql 似乎不喜欢从 text 列到 bytea 的类型转换。但这是为什么呢? bytea 是否足够通用以表示文本列中包含的任何内容?为什么演员表失败了?
我想可能有一些特定的语法可以诱使 pg 执行此转换,但我无法在 pg 文档中找到它。
--------更新-----------
我试过了,但它正在截断二进制文件:
-- change_column(:programs,"bytea USING input::bytea")
rails aborted!
StandardError: An error has occurred,this and all later migrations canceled:
PG::InvalidTextRepresentation: ERROR: invalid input Syntax for type bytea
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。