现在 在腾讯云上部署了mysql,canal服务也是在腾讯云上的。启动canal server后的报错信息如下。 也让运维家了权限和canal的账号。
2018-07-10 11:03:29.165 [Druid-ConnectionPool-Create-525230202] ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:h2:../conf/yunjiradartrace899/h2;CACHE_SIZE=1000;MODE=MYSQL;, errorCode 28000, state 28000 org.h2.jdbc.JdbcSQLException: Wrong user name or password [28000-196] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.196.jar:1.4.196] at org.h2.message.DbException.get(DbException.java:179) ~[h2-1.4.196.jar:1.4.196] at org.h2.message.DbException.get(DbException.java:155) ~[h2-1.4.196.jar:1.4.196] at org.h2.message.DbException.get(DbException.java:144) ~[h2-1.4.196.jar:1.4.196] at org.h2.engine.Engine.validateUserAndPassword(Engine.java:336) ~[h2-1.4.196.jar:1.4.196] at org.h2.engine.Engine.createSessionAndValidate(Engine.java:162) ~[h2-1.4.196.jar:1.4.196] at org.h2.engine.Engine.createSession(Engine.java:137) ~[h2-1.4.196.jar:1.4.196] at org.h2.engine.Engine.createSession(Engine.java:27) ~[h2-1.4.196.jar:1.4.196] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:354) ~[h2-1.4.196.jar:1.4.196] at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:116) ~[h2-1.4.196.jar:1.4.196] at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) ~[h2-1.4.196.jar:1.4.196] at org.h2.Driver.connect(Driver.java:69) ~[h2-1.4.196.jar:1.4.196] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) ~[druid-1.1.9.jar:1.1.9] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) ~[druid-1.1.9.jar:1.1.9] at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) ~[druid-1.1.9.jar:1.1.9]
确定 账号密码是没有错的。
原提问者GitHub用户mjjian0
先关闭一下tablemeta tsdb的能力, 这个报错主要是本地使用H2的错误, 如果有对H2比较了解的可以尝试定位或者修复一下
h2作为table ddl的历史版本存储时,会基于H2的默认jdbc配置
canal.instance.tsdb.dir=${canal.file.data.dir:../conf}/${canal.instance.destination:} canal.instance.tsdb.url=jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL; canal.instance.tsdb.dbUsername=canal canal.instance.tsdb.dbPassword=canal
解读一下,就是第一次时会创建conf/$instance$/$instance.mv.db,并设置访问密码为canal/canal,如果第二次重新打开时会校验xx.mv.db是否有多进程同时使用(会出现java.lang.IllegalStateException: The file is locked),也会校验本次的访问密码是否和第一次创建时相同
如果真遇到一些莫名其妙的问题,万能的解决办法:删除conf/对应的xx.mv.db,会重新初始化一个h2本地文件
原回答者GitHub用户agapple
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。