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

启动正常,更新数据后报错 #494

Closed
bingqingwu opened this issue Jan 17, 2018 · 7 comments
Closed

启动正常,更新数据后报错 #494

bingqingwu opened this issue Jan 17, 2018 · 7 comments
Assignees
Labels

Comments

@bingqingwu
Copy link

下载v1.0.26 alpha 1版本,根据网站上的说明修改配置文件;创建数据库:test;
启动程序,在test数据库里的test表插入一条数据,报错如下,错误信息里面显示的其他库里面的表。为什么我更新test库,会报其他库的错误?
[root@localhost canal]# tail -f logs/canal/canal.log
2018-01-17 23:05:53.957 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## set default uncaught exception handler
2018-01-17 23:05:54.022 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## load canal configurations
2018-01-17 23:05:54.023 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## start the canal server.
2018-01-17 23:05:54.069 [main] INFO com.alibaba.otter.canal.deployer.CanalController - ## start the canal server[192.168.122.1:11111]
2018-01-17 23:05:54.591 [main] WARN o.s.beans.GenericTypeAwarePropertyDescriptor - Invalid JavaBean property 'connectionCharset' being accessed! Ambiguous write methods found next to actually used [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.lang.String)]: [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.nio.charset.Charset)]
2018-01-17 23:05:54.847 [main] ERROR com.alibaba.druid.pool.DruidDataSource - testWhileIdle is true, validationQuery not set
2018-01-17 23:05:55.127 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## the canal server is running now ......
2018-01-17 23:05:55.968 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.MysqlEventParser - prepare to find start position just show master status

2018-01-17 23:06:09.929 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta - parse faield : CREATE TABLE columns_priv (
Host char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
Db char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
User char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
Table_name char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
Column_name char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Column_priv set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (Host,Db,User,Table_name,Column_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges'
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'es') CHARACTER SET utf8 NOT NULL DE', expect RPAREN, actual IDENTIFIER pos 479, line 8, column 62, token IDENTIFIER CHARACTER
at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:283) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:292) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:191) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:244) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:159) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:70) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:464) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.repository.SchemaRepository.console(SchemaRepository.java:295) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.apply(MemoryTableMeta.java:69) ~[canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.dumpTableMeta(DatabaseTableMeta.java:177) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.rollback(DatabaseTableMeta.java:127) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.processTableMeta(AbstractMysqlEventParser.java:72) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:170) [canal.parse-1.0.26-SNAPSHOT.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
2018-01-17 23:06:09.930 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta - parse faield : CREATE TABLE db (
Host char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
Db char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
User char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
Select_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Insert_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Update_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Delete_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Create_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Drop_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Grant_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
References_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Index_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Alter_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Create_tmp_table_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Lock_tables_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Create_view_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Show_view_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Create_routine_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Alter_routine_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Execute_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Event_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
Trigger_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (Host,Db,User),
KEY User (User)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :''Y') CHARACTER SET utf8 NOT NULL DE', expect RPAREN, actual IDENTIFIER pos 225, line 5, column 31, token IDENTIFIER CHARACTER
at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:283) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:292) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:191) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:244) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:159) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:70) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:464) ~[druid-1.1.7-preview_0.jar:1.1.7-preview_0]

@emanon-k
Copy link

一模一样的错,怎么解决?

@joyven
Copy link

joyven commented Jan 19, 2018

@kaikewang 这个问题的引起原因是创建表的SQL语句有“)"造成,比如枚举类型的字段,尽量避免,还有系统数据库中的有些字段是枚举的,也会报错,只要不监听这些库的变化就可以解决。

可以把实例下面的匹配所有库,修改为只匹配特定的库:

# table regex
canal.instance.filter.regex=test\\.*

@wingerx
Copy link
Collaborator

wingerx commented Jan 22, 2018

依赖的druid版本没更新吧?或者将tsdb的特性关闭也可以。

@agapple
Copy link
Member

agapple commented Feb 12, 2018

druid升级到1.1.8了,可以解决set类型的问题

@handmail
Copy link

@wingerx 如何关闭 tsdb特性?

@feigeswjtu
Copy link

遇到了同样的问题。
把conf/canal.properties这个文件里,下面一行注释掉,重启就好了。
#canal.instance.tsdb.spring.xml=classpath:spring/tsdb/h2-tsdb.xml

@agapple
Copy link
Member

agapple commented Mar 12, 2018

升级druid版本已经接近

@agapple agapple closed this as completed Mar 12, 2018
@agapple agapple self-assigned this Mar 12, 2018
@agapple agapple added the bug label Mar 12, 2018
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

7 participants