如何将不区分大小写的数据库改为区分大小写?
Artifactory需要使用区分大小写的DB。如果您的Artifactory设置了不区分大小写的DB,例如MySQL是默认的,您可以使用以下步骤进行修复。请注意,这个解决方案是为MySQL编写的。
还要注意,更改大小写敏感性和重新启动每个节点需要一小段停机时间。下面是更新后的使用REST API方法的指令。下面是路径修复和将数据库转换为区分大小写的完整步骤。
1.发现问题mysql> SELECT @@character_set_database, @@collation_database;
如果结果为“_ci”,则表示它不区分大小写,您需要使用下面的步骤。+————————–+———————-+
| @@character_set_database | @@collation_database
+————————–+———————-+
utf8 | utf8_general_ci |
+————————–+———————-+
1行(0.00秒)
2.对数据库进行备份
为了准备应对可能需要回滚的任何故障,请获取最新数据库的快照。或者,您可以使用Artifactory进行备份,而不使用二进制文件(带有“排除内容”选项的系统导出)//m.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字符集utf8;
6.确认更改mysql> SELECT @@character_set_database, @@collation_database;
结果应该将utf8_bin显示为COLLATE
7.启动人工节点
8.对于任何Maven本地存储库,禁用POM一致性检查(Admin =>本地存储库=>您的maven存储库=>基本=>启用“抑制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一致性检查”)
