问题描述
从6.10.9升级到7.7.3后,我们无法启动Artifactory。我们正在使用嵌入式derby数据库,artifactory-service.log显示以下错误:
2020-08-27T08:11:49.605Z [jfrt] [错误] [68fd8bcbbe66783b] [d.c.m.ConverterManagerImpl:249] [ocalhost-startStop-1]-转换失败。您应该分析错误,然后重试启动Artifactory。错误是:无法使用v217_create_jobs_table转换器转换数据库:模式'APP'中已经存在表/视图'JOBS'。 2020-08-27T08:11:49.606Z [jfrt] [错误] [68fd8bcbbe66783b] [tifactoryHomeConfigListener:62] [ocalhost-startStop-1]-初始化主目录失败。捕获的异常: java.lang.IllegalStateException:无法使用v217_create_jobs_table转换器转换数据库:模式'APP'中已经存在表/视图'JOBS'。 在org.artifactory.storage.db.converter.markers.ConverterManagerImpl.handleException(ConverterManagerImpl.java:252) 在org.artifactory.storage.db.converter.markers.ConverterManagerImpl.serviceConvert(ConverterManagerImpl.java:210) 在java.base / java.util.ArrayList $ ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) 在java.base / java.util.stream.ReferencePipeline $ Head.forEach(ReferencePipeline.java:658) 在org.artifactory.storage.db.converter.markers.ConverterManagerImpl.convertDatabase(ConverterManagerImpl.java:150) 在org.artifactory.lifecycle.storage.db.init.PostDbSchemaInitializationManager.convertAndInit(PostDbSchemaInitializationManager.java:61) 在org.artifactory.lifecycle.storage.db.init.HaInitLock.runInsideInitLockIfNeeded(HaInitLock.java:87) 在org.artifactory.lifecycle.storage.db.init.PostDbSchemaInitializationManager.init(PostDbSchemaInitializationManager.java:50) 在org.artifactory.lifecycle.webapp.servlet.BasicConfigurationManager.initArtifactoryInstallation(BasicConfigurationManager.java:141) 在org.artifactory.lifecycle.webapp.servlet.BasicConfigurationManager.initialize(BasicConfigurationManager.java:125) 在org.artifactory.lifecycle.webapp.servlet.ArtifactoryHomeConfigListener.contextinitialized(ArtifactoryHomeConfigListener.java:57) 在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4689) 在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) 在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) 在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) 在org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:614) 在org.apache.catalina.startup.HostConfig $ DeployDescriptor.run(HostConfig.java:1822) 在java.base / java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:515) 在java.base / java.util.concurrent.FutureTask.run(FutureTask.java:264) 在java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:628) 在java.base / java.lang.Thread.run(Thread.java:834) 由以下原因引起:java.lang.RuntimeException:无法使用v217_create_jobs_table转换器转换DB 在org.artifactory.storage.db.version.converter.DbsqlConverterUtil.convert(DbsqlConverterUtil.java:95) 在org.artifactory.storage.db.version.converter.DBsqlConverter.lambda $ convert $ 0(DBsqlConverter.java:49) 在org.jfrog.storage.util.dbutils.doWithConnection(dbutils.java:516) 在org.artifactory.storage.db.version.converter.DBsqlConverter.convert(DBsqlConverter.java:49) 在org.artifactory.storage.db.DatabaseConverteradapter.convert(DatabaseConverteradapter.java:58) 在org.artifactory.storage.db.converter.markers.ConverterManagerImpl.serviceConvert(ConverterManagerImpl.java:206) ...省略了22个通用框架 由以下原因引起:java.sql.sqlException:模式'APP'中已经存在表/视图'JOBS'。 在org.apache.derby.impl.jdbc.sqlExceptionFactory.getsqlException(未知来源) 在org.apache.derby.impl.jdbc.Util.generateCssqlException(未知来源) 在org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInsqlException(未知来源) 在org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(未知来源) 在org.apache.derby.impl.jdbc.EmbedConnection.handleException(未知来源) 在org.apache.derby.impl.jdbc.ConnectionChild.handleException(未知来源) 在org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(未知来源) 在org.apache.derby.impl.jdbc.EmbedStatement.execute(未知来源) 在org.apache.derby.impl.jdbc.EmbedStatement.executeLargeUpdate(未知来源) 在org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(未知来源) 在com.zaxxer.hikari.pool.ProxyStatement.executeUpdate(ProxyStatement.java:120) 在com.zaxxer.hikari.pool.HikariProxyStatement.executeUpdate(HikariProxyStatement.java) 在org.jfrog.storage.util.DbStatementUtils.executesqlStream(DbStatementUtils.java:61) 在org.artifactory.storage.db.version.converter.DbsqlConverterUtil.doConvert(DbsqlConverterUtil.java:102) 在org.artifactory.storage.db.version.converter.DbsqlConverterUtil.convert(DbsqlConverterUtil.java:90) ...省略了27个通用框架 由以下原因引起:org.apache.derby.iapi.error.StandardException:模式'APP'中已经存在表/视图'JOBS'。 在org.apache.derby.iapi.error.StandardException.newException(未知来源) 在org.apache.derby.iapi.error.StandardException.newException(未知来源) 在org.apache.derby.impl.sql.catalog.DataDictionaryImpl.duplicateDescriptorException(未知来源) 在org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptor(来源不明) 在org.apache.derby.impl.sql.execute.CreateTableConstantAction.executeConstantAction(未知来源) 在org.apache.derby.impl.sql.execute.MiscResultSet.open(未知来源) 在org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(未知来源) 在org.apache.derby.impl.sql.GenericPreparedStatement.execute(未知来源) ...省略了36个通用框架 2020-08-27T08:11:49.607Z [jfrt] [错误] [68fd8bcbbe66783b] [actoryContextConfigListener:91] [ocalhost-startStop-1]-初始化Artifactory上下文失败:Artifactory home未初始化。
解决方法
上述问题似乎是由于较早的升级导致数据库迁移在中间停止,并且当您尝试再次升级时,迁移脚本未能从头开始再次触发并引发错误。
选项1,尝试清除JOBS表,看看是否有帮助。
选项2:如果您具有Artifactory版本6.10的数据库快照(触发Artifactory升级之前,并且derby数据库存储在&Artifactory_home / data目录下),那么您可以将数据库还原回Artifactory版本6.10 DB,然后尝试升级。此迁移过程应重新开始。