我们正在为我们的开发人员运行Atlassian Bitbucket Server,并且我们有一个备份/恢复机制,可以将生产配置复制到测试环境中。为了使所有内容都能在测试环境中正常工作,需要使用SQL脚本来调整Bitbucket PostgreSQL数据库中的某些设置(例如,基URL、PostgreSQL连接设置等)。
Bitbucket数据库中的某些值似乎存储为java.util.Map对象的文本表示形式,例如Bitbucket外观设置(例如,UI标题颜色)示例中的key_value字段:
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';换句话说,更新成功地写入了key_value,但不知何故没有任何换行(并且Bitbucket标题颜色在重新启动后保持不变)。我还尝试在\n换行符之前显式添加一个+,但也没有效果。
看起来我没有正确地转义某些字符或其他东西。
发布于 2021-10-04 08:04:37
在此期间,我找到了解决方案。实际上,我只是忘了添加转义字符串标记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';https://stackoverflow.com/questions/64384896
复制相似问题