gpt4 book ai didi

ruby-on-rails - Rails 和 PSQL 数组,{} 和 [] 之间的区别?

转载 作者:行者123 更新时间:2023-11-29 14:07:16 24 4
gpt4 key购买 nike

我最近将我的 rails psql 数据库中的一列转换为 PSQL 数组。

当尝试使用 psql 的 contains 运算符 (<@) 查询列时,我收到一条错误消息

PG::InvalidTextRepresentation: ERROR:  array value must start with "{" or dimension information

列格式在 Rails 控制台中看起来像这样:

["string1",
"string2",
"string3"]

在我的迁移过程中,该列是这样设置的:

add_column :table, :column, :text, :array => true, null: false, :default => []

然后我将另一列的内容复制到其中。

所以两个问题:

1) 我的迁移设置是否正确?我见过一些人将他们的数组默认为 {} 有什么区别?

2) 是我的数据格式问题吗?如果是,我该如何解决?

最佳答案

PostgreSQL 中数组的标准字符串表示使用 {},例如:

=> select array[11, 23];
array
---------
{11,23}
(1 row)

因此,如果有人使用 '{}'(注意引号使其成为字符串),那么他们可能正在使用空数组的字符串表示形式。当您使用时:

:default => [ ]

您正在使用一个空的 Ruby 数组作为默认值,并让 ActiveRecord 将其转换为 PostgreSQL 可以理解的内容。

如果您的迁移运行成功,那么它可能是正确的。您可以通过从 psql CLI 工具内部查看表的结构来验证这一点,如果您说:

\d table_name

你应该看到这样的东西:

column | text[] | default '{}'::text[]

在输出中。

关于ruby-on-rails - Rails 和 PSQL 数组,{} 和 [] 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22722522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com