liyue1025 opened a new issue, #8918:
URL: https://github.com/apache/seatunnel/issues/8918

   SQL Server CDC -> MySQL 同步任务执行报错:
   `org.apache.seatunnel.api.table.factory.FactoryException: 
ErrorCode:[API-06], ErrorDescription:[Factory initialize failed] - Unable to 
create a source for identifier 'SqlServer-CDC'.
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:101)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSource(MultipleTableJobConfigParser.java:375)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:209)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:114)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:182)
           at 
org.apache.seatunnel.app.service.impl.JobExecutorServiceImpl.executeJobBySeaTunnel(JobExecutorServiceImpl.java:126)
           at 
org.apache.seatunnel.app.service.impl.JobExecutorServiceImpl.jobExecute(JobExecutorServiceImpl.java:79)
           at 
org.apache.seatunnel.app.controller.JobExecutorController.jobExecutor(JobExecutorController.java:64)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
           at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:498)
           at 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
           at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
           at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
           at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
           at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
           at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
           at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
           at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
           at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
           at 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
           at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
           at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
           at 
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)
           at 
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
           at 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
           at 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
           at 
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
           at 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
           at 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
           at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
           at 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
           at 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
           at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
           at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
           at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
           at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
           at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
           at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
           at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
           at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
           at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
           at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
           at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
           at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
           at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
           at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
           at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
           at org.eclipse.jetty.server.Server.handle(Server.java:516)
           at 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
           at 
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
           at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
           at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
           at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
           at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
           at 
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
           at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
           at 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
           at java.lang.Thread.run(Thread.java:750)
   Caused by: 
org.apache.seatunnel.api.table.catalog.exception.CatalogException: 
ErrorCode:[API-03], ErrorDescription:[Catalog initialize failed] - Failed 
getting table TEST.dbo.Student
           at 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.getTable(AbstractJdbcCatalog.java:203)
           at 
org.apache.seatunnel.api.table.catalog.Catalog.buildCatalogTablesWithErrorCheck(Catalog.java:185)
           at 
org.apache.seatunnel.api.table.catalog.Catalog.getTables(Catalog.java:155)
           at 
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.lambda$getCatalogTables$0(CatalogTableUtil.java:124)
           at java.util.Optional.map(Optional.java:215)
           at 
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.getCatalogTables(CatalogTableUtil.java:118)
           at 
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.getCatalogTables(CatalogTableUtil.java:98)
           at 
org.apache.seatunnel.connectors.seatunnel.cdc.sqlserver.source.SqlServerIncrementalSourceFactory.lambda$createSource$1(SqlServerIncrementalSourceFactory.java:107)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:113)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:74)
           ... 64 common frames omitted
   Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" 
data type is not supported.
           at 
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:227)
           at 
com.microsoft.sqlserver.jdbc.TypeInfo$Builder$16.apply(dtv.java:3015)
           at com.microsoft.sqlserver.jdbc.TypeInfo$Builder.build(dtv.java:3245)
           at com.microsoft.sqlserver.jdbc.TypeInfo.getInstance(dtv.java:3304)
           at 
com.microsoft.sqlserver.jdbc.StreamColumns.setFromTDS(StreamColumns.java:183)
           at 
com.microsoft.sqlserver.jdbc.SQLServerResultSet$1CursorInitializer.onColMetaData(SQLServerResultSet.java:260)
           at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:87)
           at 
com.microsoft.sqlserver.jdbc.SQLServerResultSet.<init>(SQLServerResultSet.java:368)
           at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1545)
           at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:467)
           at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:409)
           at 
com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
           at 
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
           at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:219)
           at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:199)
           at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:331)
           at 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.getTable(AbstractJdbcCatalog.java:182)
           ... 73 common frames omitted`
   
   以下是任务定义:
   `{
       "transform" : [],
       "sink" : [
           {
               "batch_size" : "1000",
               "primary_keys" : [
                   "StudentID"
               ],
               "max_retries" : "0",
               "create_index" : "true",
               "schema_save_mode" : "CREATE_SCHEMA_WHEN_NOT_EXIST",
               "source_table_name" : "Tablexxx",
               "max_commit_attempts" : "3",
               "auto_commit" : "true",
               "plugin_name" : "Jdbc",
               "url" : 
"jdbc:mysql://xxx.xxx.xxx.xxx:3306/testdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true",
               "is_exactly_once" : "false",
               "database" : "testdb",
               "password" : "******",
               "transaction_timeout_sec" : "-1",
               "driver" : "com.mysql.cj.jdbc.Driver",
               "data_save_mode" : "APPEND_DATA",
               "support_upsert_by_query_primary_key_exist" : "false",
               "connection_check_timeout_sec" : "30",
               "multi_table_sink_replica" : "1",
               "generate_sink_sql" : true,
               "user" : "root",
               "table" : "seatunnel_student"
           }
       ],
       "source" : [
           {
               "base-url" : 
"jdbc:sqlserver://xxx.xxx.xxx.xx:1444;databaseName=TEST",
               "startup.mode" : "INITIAL",
               "catalog" : {
                   "factory" : "SqlServer"
               },
               "parallelism" : "1",
               "table-names" : [
                   "TEST.dbo.Student"
               ],
               "format" : "DEFAULT",
               "chunk-key.even-distribution.factor.lower-bound" : "0.05",
               "result_table_name" : "Table16861680588960",
               "database-names" : [
                   "TEST"
               ],
               "server-time-zone" : "UTC",
               "plugin_name" : "SqlServer-CDC",
               "password" : "******",
               "exactly_once" : "false",
               "sample-sharding.threshold" : "1000",
               "connection.pool.size" : "20",
               "incremental.parallelism" : "1",
               "snapshot.split.size" : "8096",
               "stop.mode" : "NEVER",
               "snapshot.fetch.size" : "1024",
               "connect.max-retries" : "3",
               "chunk-key.even-distribution.factor.upper-bound" : "100.0",
               "connect.timeout.ms" : "30000",
               "username" : "******"
           }
       ],
       "env" : {
           "job.mode" : "STREAMING",
           "job.name" : "TEST_SQL_SERVER_CDC",
           "savemode.execute.location" : "CLUSTER"
       }
   }`
   
   版本说明:
   Seatunnel 2.3.8
   Seatunnel-Web 1.0.2
   SQL Server 2019
   MySQL 5.7
   
   seatunnel-2.3.8/lib 下部分 jar 包:
   mssql-jdbc-12.8.1.jre8.jar
   
   seatunnel-web-1.0.2/lib 下部分 jar 包:
   connector-cdc-sqlserver-2.3.8.jar
   datasource-jdbc-sqlserver-1.0.2.jar
   datasource-sqlserver-cdc-1.0.0.jar
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@seatunnel.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to