Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

不能解析索引为 INVISIBLE 的表 #3428

Closed
2 tasks done
qianlongzt opened this issue Apr 1, 2021 · 2 comments
Closed
2 tasks done

不能解析索引为 INVISIBLE 的表 #3428

qianlongzt opened this issue Apr 1, 2021 · 2 comments
Labels
Milestone

Comments

@qianlongzt
Copy link
Contributor

  • I have searched the issues of this repository and believe that this is not a duplicate.
  • I have checked the FAQ of this repository and believe that this is not a duplicate.

environment

  • canal version 1.1.4
  • mysql version 8.0.18

Issue Description

简化的表结构如下

CREATE TABLE `proposal_order_info` (
 ......

  KEY `idx_create_time` (`create_time`) /*!80000 INVISIBLE */,
  KEY `idx_status_type_review` (`status`,`cooperation_type`,`admin_review_result`)
) ENGINE=InnoDB DEFAULT  COMMENT='订单详细信息'

报错如下

com.alibaba.fastsql.sql.parser.ParserException: syntax error, error in :'me`) /*!80000 INVISIBLE */,
  KEY `', expect ), actual null, pos 5497, line 69, column 42, token HINT

Steps to reproduce

  1. 添加索引,将其设置为 INVISIBLE
  2. 重启canal服务端
  3. 向表里insert记录

Expected behaviour

没有错误发生

Actual behaviour

com.alibaba.fastsql.sql.parser.ParserException: syntax error, error in :'me`) /*!80000 INVISIBLE */,
  KEY `', expect ), actual null, pos 5497, line 69, column 42, token HINT

If there is an exception, please attach the exception trace:

com.alibaba.fastsql.sql.parser.ParserException: syntax error, error in :'me`) /*!80000 INVISIBLE */,
  KEY `', expect ), actual null, pos 5497, line 69, column 42, token HINT
	at com.alibaba.fastsql.sql.parser.SQLParser.printError(SQLParser.java:430) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.fastsql.sql.parser.SQLParser.accept(SQLParser.java:438) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.fastsql.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:358) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.fastsql.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:291) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.fastsql.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:231) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.fastsql.sql.SQLUtils.parseStatements(SQLUtils.java:536) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.fastsql.sql.repository.SchemaRepository.console(SchemaRepository.java:439) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973]
	at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.apply(MemoryTableMeta.java:83) ~[canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache.parseTableMeta(TableMetaCache.java:104) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache.getTableMetaByDB(TableMetaCache.java:90) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache.access$000(TableMetaCache.java:32) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache$1.load(TableMetaCache.java:63) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache$1.load(TableMetaCache.java:53) [canal.parse-1.1.4.jar:na]
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache.get(LocalCache.java:3937) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) [guava-18.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4830) [guava-18.0.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache.getTableMeta(TableMetaCache.java:195) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.getTableMeta(LogEventConvert.java:950) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsEventForTableMeta(LogEventConvert.java:479) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsEvent(LogEventConvert.java:500) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsEvent(LogEventConvert.java:491) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:125) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:69) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.AbstractEventParser.parseAndProfilingIfNecessary(AbstractEventParser.java:417) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3$1.sink(AbstractEventParser.java:217) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:178) [canal.parse-1.1.4.jar:na]
	at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:279) [canal.parse-1.1.4.jar:na]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_251]
@agapple agapple added the bug label Apr 16, 2021
@agapple agapple added this to the v1.1.5 milestone Apr 17, 2021
@agapple
Copy link
Member

agapple commented Apr 19, 2021

升级druid版本为1.2.6后已解决

@agapple agapple closed this as completed Apr 19, 2021
@coolroad
Copy link

coolroad commented May 7, 2021

@agapple
docker镜像canal/canal-server:v1.1.5
mysql8.0.20
仍然报错:

PRIMARY KEY (`id`),
 KEY `idx_task_supermarket_id` (`supermarket_id`) /*!80000 INVISIBLE */,
 KEY `idx_task_screen_id` (`screen_id`) /*!80000 INVISIBLE */,
 KEY `idx_task_person_id` (`handler_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1390548117890076675 DEFAULT CHARSET=utf8 
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'id`) /*!80000 INVISIBLE */,
 KEY `', expect ), actual ,, pos 1374, line 22, column 74, token ,
       at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:576) ~[druid-1.2.6.jar:1.2.6]

从错误日志来看,druid已经升级到1.2.6了,问题仍在。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants