【问题标题】:How to add new JSON column in Postgres如何在 Postgres 中添加新的 JSON 列
【发布时间】:2019-01-22 09:55:33
【问题描述】:

我正在尝试向表中添加一个 json 类型的列,但它不起作用并且我无法获得正常的示例,我做错了什么?

ALTER TABLE user ADD COLUMN purshased_product SET DATA TYPE JSONB USING purshased_product::JSONB;

我不是要更改列,而是创建一个 json 类型的新列

@Convert(converter = PurshasedProductConverter.class)
private PurshasedProductConverter[] purshasedProducts;

我的变量

【问题讨论】:

  • 我有一个user表,但是没有json类型的列

标签: spring postgresql ddl alter


【解决方案1】:

要添加新列,请使用:

ALTER TABLE "user" ADD COLUMN purshased_product jsonb;

在线示例:https://rextester.com/SVST52826

set data typeusing 子句仅用于修改现有列。


请注意,user 是保留关键字。创建具有该名称的表是个坏主意。如果您坚持这样做,您必须在每次引用表格时使用双引号(就像我一样)

【讨论】:

  • 无法设置[Lru.valyaeva.marathon.utils.PurshasedProductConverter;字段 ru.valyaeva.marathon.model.User.purshasedProducts 到 ru.valyaeva.marathon.model.PurshasedProduct
  • @СамирШахмурадлы:这不是 Postgres 错误消息,而且很可能不会在您运行 ALTER TABLE 语句时出现,而是在应用程序的某个位置出现。
【解决方案2】:

示例:

ALTER TABLE schema.t_my_table
ADD COLUMN purshased_product jsonb; (You may also use the type json)

请查看here 以了解差异。在 json 和 jsonb 两种数据类型之间。

数据类型 json 和 jsonb,由 PostgreSQL 定义 文档,几乎相同;关键的区别在于 json 数据存储为 JSON 输入文本的精确副本,而 jsonb 以分解的二进制形式存储数据;也就是说,不是作为 ASCII/UTF-8 字符串,但为二进制代码。

【讨论】:

  • 考虑描述 SO 上的差异。
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2011-07-12
  • 2020-04-08
  • 2016-06-02
  • 2014-11-15
  • 2021-09-01
  • 2010-11-17
相关资源
最近更新 更多