我正在使用MariaDB 5.5.38和MySQL的JDBC驱动程序。根据{{3}},我应该使用像
这样的连接字符串jdbc:mysql://address=(type=master)(host=master1host),address=(type=master)(host=master2host)/db
使用多个主控主机。但是当我使用它时,我会在NullPointerException
中获得com.mysql.jdbc.NonRegisteringDriver.parseHostPortPair(NonRegisteringDriver.java:216) [mysql.mysql-connector-java-5.1.30.jar:na]
。我也使用Apache Commons的连接池,但我认为它不相关。那么,我做错了什么?
答案 0 :(得分:1)
答案 1 :(得分:0)
浏览mysql-connector-j源代码后,NPE是由连接URL上缺少前缀引起的。它应该是以下之一:
jdbc:mysql:loadbalance//.....
jdbc:mysql:replication//.....
使用这个url似乎只有// host:port,host:port / db工作的url,只有第一个用作master。
另外要检查的是你正在使用的Driver类。根据这个问题:How do I configure our MySQL ReplicationDriver for our JBoss 7 data source?
正确的课程是
com.mysql.jdbc.ReplicationDriver
答案 2 :(得分:0)
我遇到了同样的问题并发现了以下内容: https://bugs.mysql.com/bug.php?id=75440
我将连接网址更改为:
jdbc:mysql://address=(protocol=tcp)(type=master)(host=serv1),address=(protocol=tcp)(type=master)(host=serv2)/db
到目前为止,这对我有用