Skip to content

connect error when client driver is mariadb and backend mysql's sql_mode is 'NO_ENGINE_SUBSTITUTION' #1243

@yexiaoli88

Description

@yexiaoli88
  • dble version: 5.6.29-dble-9.9.9.9-67d04aa94d912fb01583096c6d8cba52f513996e-20190619021040
  • preconditions :
    1.add follows to my.cnf of backend mysql:
sql_mode=NO_ENGINE_SUBSTITUTION

2.restart mysql server

  • configs:

schema.xml

<schema name="mytest" sqlMaxLimit="100" dataNode="dn1">
    <schema name="testdb" sqlMaxLimit="100" dataNode="dn4">
        <table name="sharding_four" dataNode="dn1,dn2,dn3,dn4" rule="hash-four"/>
        <table name="sharding_table" dataNode="dn1,dn2" rule="hash-two"/>
        <table name="test" dataNode="dn3,dn4" type="global"/>
    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="db1"/>
    <dataNode name="dn2" dataHost="localhost1" database="db2"/>
    <dataNode name="dn3" dataHost="localhost1" database="db3"/>
    <dataNode name="dn4" dataHost="localhost1" database="db4"/>
    <dataHost balance="0" maxCon="1000" minCon="10" name="localhost1" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM1" url="10.186.61.87:3306" password="123" user="root"/>
    </dataHost>
  • steps:
  1. show variables like 'sql_mode%' in backend mysql;
mysql> show variables like 'sql_mode%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| sql_mode      | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+

2.execute java code in java IDE:

 public static void main(String[] args) throws Exception {
	       
	Connection connection =  DriverManager.getConnection("jdbc:mysql://10.186.61.87:8066?useServerPrepStmts=true", "test", "123");
}
  • expect result:
    1. no err returns in step2
  • real result:
    1. step 2 returns err as follows:
Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: set autocommit cmd can't used in multi-set statement
Query is : set session autocommit=1,sql_mode='IGNORE_SPACE,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1115)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1047)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1002)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:142)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:125)
	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.setSessionOptions(AbstractConnectProtocol.java:451)
	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:393)
	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:823)
	at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:469)
	at org.mariadb.jdbc.Driver.connect(Driver.java:104)
	... 3 more
  • supplements:
    1. mariadb drive version: mariadb-java-client-1.5.8.jar

Metadata

Metadata

Assignees

Labels

Priority/Lowexpect fix as devs arrangementautotest-waitissue waits to be added to autotestresolveproblem has been fixed by developer

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions