-
Bug
-
Resolution: Fixed
-
Low
-
CCMA - 3.4.6
-
None
-
1
-
Severity 3 - Minor
-
3
Doing a migration using CCMA 3.4.6 or 3.4.5 and earlier with CSV feature flag enabled, and MS-SQL 2014:
<driver-name>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-name> <driver-version>6.3.0.0</driver-version> <database-name>Microsoft SQL Server</database-name> <database-version>12.00.4237</database-version>
CCMA fails with bad SQL grammar errors:
2023-05-08 14:33:49,711 ERROR [pool-5284-thread-142] [agent.newexport.store.JdbcConfluenceStore] mutate Query failed at: DROP TABLE IF EXISTS mig_contentid_xxxx -- planName: Failed2 | taskName: Migrate space XXX | cloudUrl: https://XXXX.atlassian.net | cloudId: XXXXX | url: /confluence/rest/migration/latest/plan/XXXX/start | userName: XXXX | taskId: XXXX | planId: XXXX| stepId: XXXX | stepConfig: {"spaceKey":"XXX","fileId":"XXXX","cloudId":"XXXX"} | traceId: aee90df2252ff2f5 | stepType: CONFLUENCE_EXPORT org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [DROP TABLE IF EXISTS mig_contentid_77322469f121438b8e033f655f0d5bdf]; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'IF'. at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:230) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:655) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:876) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:900) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:287) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:292) at com.atlassian.migration.agent.newexport.store.JdbcConfluenceStore.mutate(JdbcConfluenceStore.java:119) at com.atlassian.migration.agent.newexport.ConfluenceRapidExporter.tryDropContentIdTable(ConfluenceRapidExporter.java:181) at com.atlassian.migration.agent.newexport.ConfluenceRapidExporter.export(ConfluenceRapidExporter.java:161) at com.atlassian.migration.agent.service.stepexecutor.space.SpaceExportExecutor.exportSpaceContentToFile(SpaceExportExecutor.java:475) at com.atlassian.migration.agent.service.stepexecutor.space.SpaceExportExecutor.exportedFileGenerator(SpaceExportExecutor.java:432) at com.atlassian.migration.agent.service.stepexecutor.space.SpaceExportExecutor.exportProcessor(SpaceExportExecutor.java:348) at com.atlassian.migration.agent.service.stepexecutor.space.SpaceExportExecutor.doExport(SpaceExportExecutor.java:332) at com.atlassian.migration.agent.service.stepexecutor.space.SpaceExportExecutor.lambda$runStep$12(SpaceExportExecutor.java:610) at com.atlassian.migration.agent.service.execution.SpaceBoundStepExecutor.wrapStepResultSupplier(SpaceBoundStepExecutor.java:19) at com.atlassian.migration.agent.service.stepexecutor.space.SpaceExportExecutor.runStep(SpaceExportExecutor.java:604) at com.atlassian.migration.agent.service.execution.StepExecutionService$StepExecution.lambda$null$0(StepExecutionService.java:318) at com.atlassian.migration.agent.logging.LoggingContextBuilder.execute(LoggingContextBuilder.java:127) at com.atlassian.migration.agent.service.execution.StepExecutionService$StepExecution.lambda$start$1(StepExecutionService.java:313) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'IF'. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:260) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1547) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:528) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:461) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7342) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2688) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:224) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:204) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:408) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:410) at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:883) at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:876) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:639) ... 21 more
But moving to XML export resolved the issue
Workaround
1-) Use versions up to 3.4.5
2-) Do not enable CSV migration via feature flags. XML can be enabled via
migration-assistant.enable.original-xml-export