postgresql - 如何更新 PostgreSQL 数据库中 Java 地图的文本表示?
问题描述
我们正在为我们的开发人员运行 Atlassian Bitbucket Server,并且我们有一个备份/恢复机制,可以将生产配置复制到测试环境中。为了使测试环境中的一切正常运行,SQL 脚本用于调整 Bitbucket PostgreSQL 数据库中的某些设置(例如,基本 URL、LDAP 连接设置等)。
Bitbucket 数据库中的某些值似乎存储为java.util.Map
对象的文本表示形式,key_value
例如此 Bitbucket 外观设置示例中的字段(例如,UI 标题颜色):
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 无法重新启动。例如,我试过这个,但它根本没有效果:
UPDATE plugin_setting SET key_value='#java.util.Map\ncustomThemeHeaderColour\x0C#abcdef'
WHERE key_name='look-and-feel:COLOR_MAP';
换句话说,UPDATE 成功写入了key_value
,但不知何故没有任何换行符(并且 Bitbucket 标题颜色在重新启动后保持不变)。我还尝试在换行符+
之前显式添加 a ,但这也没有效果。\n
似乎我没有正确地转义某些字符或其他东西......
解决方案
与此同时,我找到了解决方案。本质上,我只是忘了添加转义字符串标记E
:
-- 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';
推荐阅读
- css - 如何在左侧屏幕显示元素取决于使用 css 的移动屏幕分辨率?
- android - 在 java.time API 和 java.util.Date 之间转换
- python - Python:将 errno 映射到 OSError 的子类
- html - 我怎样才能有嵌套的 mat-table sortables?
- c# - Sendkeys 在使用 Appium 的 Winappdriver 中不起作用
- linux - 使用 ImageMagick 创建 GIF 图像时出错:异常过多和闪烁问题
- android - 使用 Kotlin 将多个值传递给 Android Studio 中的另一个 Activity
- html - 烧瓶没有在html中显示变量
- typo3 - TYPO3 - RouteEnhancer 添加来自其他插件的参数
- java - 使用 CsvBeanReader 时有没有办法跳过标题?