首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PostgreSQL数据库中更新Java地图的文本表示?

如何在PostgreSQL数据库中更新Java地图的文本表示?
EN

Stack Overflow用户
提问于 2020-10-16 15:41:26
回答 1查看 33关注 0票数 2

我们正在为我们的开发人员运行Atlassian Bitbucket Server,并且我们有一个备份/恢复机制,可以将生产配置复制到测试环境中。为了使所有内容都能在测试环境中正常工作,需要使用SQL脚本来调整Bitbucket PostgreSQL数据库中的某些设置(例如,基URL、PostgreSQL连接设置等)。

Bitbucket数据库中的某些值似乎存储为java.util.Map对象的文本表示形式,例如Bitbucket外观设置(例如,UI标题颜色)示例中的key_value字段:

代码语言:javascript
复制
bitbucket=# select * from plugin_setting where key_name like 'look%';

         namespace         |          key_name           |              key_value              |  id  
---------------------------+-----------------------------+-------------------------------------+------
 bitbucket.global.settings | look-and-feel:COLOR_MAP     | #java.util.Map                     +| 7988
                           |                             | customThemePrimaryColour\x0C#abcdef+| 
                           |                             | customThemeHeaderColour\x0C#9933ff  | 

为了更好地区分我们的测试和生产环境,我想用一个全新的值映射来更新key_value,但到目前为止,无论我尝试了什么,要么没有效果(即,应用了默认设置),要么甚至最终损坏了数据库,Bitbucket无法重新启动。例如,我尝试这样做,但它根本没有效果:

代码语言:javascript
复制
UPDATE plugin_setting SET key_value='#java.util.Map\ncustomThemeHeaderColour\x0C#abcdef'
                      WHERE key_name='look-and-feel:COLOR_MAP';

换句话说,更新成功地写入了key_value,但不知何故没有任何换行(并且Bitbucket标题颜色在重新启动后保持不变)。我还尝试在\n换行符之前显式添加一个+,但也没有效果。

看起来我没有正确地转义某些字符或其他东西。

EN

回答 1

Stack Overflow用户

发布于 2021-10-04 08:04:37

在此期间,我找到了解决方案。实际上,我只是忘了添加转义字符串标记E

代码语言:javascript
复制
-- set the Bitbucket header color to light purple via properties of the look-and-feel plugin
UPDATE plugin_setting  SET key_value = E'#java.util.Map\ncustomThemeHeaderColour\x0C#b941ff'
                       WHERE key_name = 'look-and-feel:COLOR_MAP';

另请参阅:What's the "E" before a Postgres string?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64384896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档