Details
-
Bug
-
Resolution: Tracked Elsewhere
-
Low
-
None
-
6.1.0, 6.2.0
-
Severity 2 - Major
-
Description
Summary
It is not possible to upgrade Confluence to version 6.x when using the Microsoft JDBC driver for connecting to SQL server.
Environment
- Confluence 5.x upgrading to 6.x (versions tested were 5.10.8 and 6.2.0)
- SQL Server 2014
- sqljdbc42.jar driver
Steps to Reproduce
- Setup Confluence 5.x with a Microsoft official JDBC driver
- Attempt to upgrade to version 6.x
Expected Results
Upgrade finishes successfully
Actual Results
The following exception is thrown in the atlassian-confluence.log file:
2017-05-17 13:52:36,412 ERROR [localhost-startStop-1] [atlassian.confluence.plugin.PluginFrameworkContextListener] launchUpgrades Upgrade failed, application will not start: Upgrade task com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask@503b3666 failed during the SCHEMA_UPGRADE phase due to: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9 com.atlassian.confluence.upgrade.UpgradeException: Upgrade task com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask@503b3666 failed during the SCHEMA_UPGRADE phase due to: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9 at com.atlassian.confluence.upgrade.AbstractUpgradeManager.executeUpgradeStep(AbstractUpgradeManager.java:234) at com.atlassian.confluence.upgrade.AbstractUpgradeManager.runSchemaUpgradeTasks(AbstractUpgradeManager.java:190) at com.atlassian.confluence.upgrade.AbstractUpgradeManager.upgrade(AbstractUpgradeManager.java:138) at com.atlassian.confluence.plugin.PluginFrameworkContextListener.launchUpgrades(PluginFrameworkContextListener.java:118) at com.atlassian.confluence.plugin.PluginFrameworkContextListener.contextInitialized(PluginFrameworkContextListener.java:77) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9 at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1407) at com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask.readMssqlConstraintNames(Hibernate5ConstraintNamesPreSchemaUpgradeTask.java:261) at com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask.readMssqlDropConstraintNames(Hibernate5ConstraintNamesPreSchemaUpgradeTask.java:246) at com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask.dropUniqueConstraintsMssql(Hibernate5ConstraintNamesPreSchemaUpgradeTask.java:236) at com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask.dropUniqueConstraints(Hibernate5ConstraintNamesPreSchemaUpgradeTask.java:193) at com.atlassian.confluence.upgrade.upgradetask.Hibernate5ConstraintNamesPreSchemaUpgradeTask.doUpgrade(Hibernate5ConstraintNamesPreSchemaUpgradeTask.java:166) at com.atlassian.confluence.upgrade.AbstractUpgradeManager$UpgradeStep$3.execute(AbstractUpgradeManager.java:641) at com.atlassian.confluence.upgrade.AbstractUpgradeManager.executeUpgradeTask(AbstractUpgradeManager.java:248) at com.atlassian.confluence.upgrade.AbstractUpgradeManager.executeUpgradeStep(AbstractUpgradeManager.java:228) ... 13 more Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9 at org.hibernate.dialect.TypeNames.get(TypeNames.java:70) at org.hibernate.dialect.TypeNames.get(TypeNames.java:101) at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:679) at org.hibernate.loader.custom.JdbcResultMetadata.getHibernateType(JdbcResultMetadata.java:77) at org.hibernate.loader.custom.ScalarResultColumnProcessor.performDiscovery(ScalarResultColumnProcessor.java:45) at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:486) at org.hibernate.loader.Loader.getResultSet(Loader.java:2131) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1911) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1887) at org.hibernate.loader.Loader.doQuery(Loader.java:932) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349) at org.hibernate.loader.Loader.doList(Loader.java:2615) at org.hibernate.loader.Loader.doList(Loader.java:2598) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2430) at org.hibernate.loader.Loader.list(Loader.java:2425) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:335) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2127) at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:957) at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:147) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1398) ... 21 more 2017-05-17 13:52:36,412 ERROR [localhost-startStop-1] [atlassian.confluence.plugin.PluginFrameworkContextListener] launchUpgrades 1 errors were encountered during upgrade: 2017-05-17 13:52:36,412 ERROR [localhost-startStop-1] [atlassian.confluence.plugin.PluginFrameworkContextListener] launchUpgrades 1: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
Notes
Despite the Microsoft official drivers being outside of the Supported JDBC Drivers, there are some scenarios where we are unable to use the JTDS option. One example is when Confluence is hosted in Azure.
This issue does not occur if you upgrade to 6.0.x versions.
Workaround
- Tail the logs durring the upgrade
- Once the error above occurs, stop Confluence
- Move from the Microsoft driver to the supported JTDS by changing the following properties in confluence.cfg.xml from:
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.url">jdbc:sqlserver://<server>:<port>;databaseName=<DBname></property>
To:
<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:jtds:sqlserver://<server>:<port>/<DBname></property>
- Start the newer version of Confluence again, the upgrade should finish
Attachments
Issue Links
- duplicates
-
CONFSERVER-26834 Support for Microsoft SQL Server JDBC Driver
- Closed