如何在x射线3升级期间从Snyk错误中恢复

帕特里克·罗素
2023-01-22还剩11分08秒

主题

如果Snyk数据在Mongo数据库中,Xray 3将无法升级。

影响版本

x光3。X迁移和升级

描述

x射线曾经支持Snyk漏洞数据,但这个合作关系结束了一段时间。因此,MongoDB到Postgres的迁移不考虑MongoDB数据库中的漏洞项。URL长度超过64个字符,导致错误:

2020-04-11T12:49:24.165Z ^[[33m[jfxps]^[[0m ^[[1m] [31m[ERROR]^[[0m [] [lock:97] [main] Could not start running: Migration for mongodb has failed: mongodb migrations output:

> 0061年_xray.up.mgo

V0061_BinaryManagersIndexed2022世界杯阿根廷预选赛赛程Resources_Up

> 1000年_xray.up.mgo

V1000_MigrateMongoCollectionsToPostgres_Up

ERROR: Method V1000_MigrateMongoCollectionsToPostgres_Up returned an ERROR: Failed on migrate vulnerability: Failed to run bulk upload command copy public_vulnerilities_sources FROM '/opt/jfrog/xray/var/data/server/db_migrations/mgo2pg/ public_vulnerilities_sources . CSV ' WITH NULL AS E'''' DELIMITER ',' CSV HEADER;: ERROR: exit status 1 .输出说明

StdErr:错误:值对于类型字符变化太长(64)

复制public_vulnerilities_sources,行49866,列source_id: "SNYK-DOTNET-MICROSOFTASPNETCORESERVERKESTRELTRANSPORTABSTRACTIONS-60242"

决议

您需要在MongoDB中纠正有问题的表行,然后强制重新启动迁移。

1.登录MongoDB:
如果“Password”无效,密码可能在/root下
mongo -u x射线-p password -authenticationDatabase x射线-authenticationMechanism超标准编码- sha -1
2.在MongoDB中切换到Xray db
使用x光
3.执行下面的查询,它将URL块缩短到64个字符以下:
db.vulnerabilities。更新({" _id ":“x光- 67456 "},{" $集":{“来源”:[

"name": "Snyk VulnDB",
“source_id”:“jfrog-fix”,
“url”:“https://snyk.io/vuln/SNYK-DOTNET-60242”

}})
4.登录PostgreSQL
# / opt / PostgreSQL / 9.6 / bin
#默认密码:“xray”
./psql xraydb x射线
5.在PostgreSQL数据库中,运行以下查询。它重新开始迁移。
删除db_migrations_running;
6.重新启动x光