如何将不区分大小写的数据库修改为区分大小写?

约书亚汉
2023-01-22 11:09

Artifactory要求使用区分大小写的DB。如果您的Artifactory设置为不区分大小写的DB,例如MySQL是默认的,您可以使用以下步骤来修复它。请注意,这个解决方案是为MySQL编写的。

还要注意,更改大小写敏感性和重新启动每个节点需要少量停机时间。下面是使用REST API方法的更新说明。下面是路径修复和将数据库转换为区分大小写的完整步骤。

1.发现问题mysql> SELECT @@character_set_database;
如果结果有" _ci ",这意味着它是不区分大小写的,您需要使用下面的步骤。+————————–+———————-+

| @@character_set_database | @@collation_database |

+————————–+———————-+

| utf8 | utf8_general_ci |

+————————–+———————-+

set中的1行(0.00秒)

2.对数据库进行备份
为了为可能需要回滚的任何故障做好准备,请对最新的数据库进行快照。或者,您可以使用Artifactory进行备份而不使用二进制文件(带“排除内容”选项的系统导出-//www.si-fil.com/confluence/display/RTF/Importing+and+Exporting#ImportingandExporting-SystemImportandExport).

3.检测冲突通过运行以下REST API (已启用试运行)对于每个本地存储库

修复冲突路径REST API

描述:修复在给定的本地非缓存存储库中与其父层次结构冲突的所有工件路径(在不区分大小写的数据库上)。可以在任何本地存储库上执行预演。
先决条件:在Maven存储库上,在存储库设置面板中选中“Suppress POM Consistency check”复选框。此测试仅对不区分大小写的数据库有效。
: 3.0.5
安全:需要管理员权限
使用: POST /api/repairPaths/ {path} [?干= true)
生产: application / json
样例输出

POST / api / repairPaths / libs-release-local吗?干= false

“冲突”:(

“冲突”:(
“ext-releases-local: org/jdom”
),
“路径”:“ext-releases-local: org/JDOM/test”
},

“冲突”:(
“ext-releases-local: org/jdom”
),
“路径”:“ext-releases-local: org/jdom/test/build/1/build - 1. - json”
},
),
“消息”:“完成”,
“numConflicts”:2
“numRepaired”:2

请确保将输出保存到文件中,这样您就不需要再次运行它,这将需要一段时间,对性能有中等影响。

4.关闭所有Artifactory节点

5.将DB更改为区分大小写运行下面的mysql查询ALTER DATABASE artdb CHARACTER SET utf8
6.确认更改mysql> SELECT @@character_set_database;
结果应该将utf8_bin显示为COLLATE

7.启动Artifactory节点

8.对于任何Maven本地存储库,禁止POM一致性检查(Admin =>本地存储库=>您的maven存储库=> Basic =>启用“抑制POM一致性检查”)

9.解决冲突通过为每个本地存储库运行以下REST API(禁用预演)文章http:// <主机> / artifactory / api / repairPaths /回购> < ?干= false
10.验证修复通过为每个本地存储库运行以下REST API(启用了演练)
文章http:// <主机> / artifactory / api /repairPaths回购> / < ?干= true文章http:// <主机> / artifactory / api / repairPaths /回购> < ?干= true
11.重新启用POM一致性检查(Admin =>本地存储库=>您的maven存储库=>基本=>取消“抑制POM一致性检查”)