Description:
Preparing a call to a stored procedure throws an exception:
Exception in thread "main" java.sql.SQLException: java.lang.NullPointerException
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:997)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:983)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:928)
at com.mysql.jdbc.CharsetMapping.getMysqlCharsetForJavaEncoding(CharsetMapping.java:618)
at com.mysql.jdbc.CharsetMapping.getCollationIndexForJavaEncoding(CharsetMapping.java:626)
at com.mysql.jdbc.Field.setEncoding(Field.java:442)
at com.mysql.jdbc.DatabaseMetaData.buildResultSet(DatabaseMetaData.java:916)
at com.mysql.jdbc.DatabaseMetaData.buildResultSet(DatabaseMetaData.java:902)
at com.mysql.jdbc.DatabaseMetaData.getProceduresAndOrFunctions(DatabaseMetaData.java:4760)
at com.mysql.jdbc.DatabaseMetaData.getProcedureOrFunctionColumns(DatabaseMetaData.java:4412)
at com.mysql.jdbc.JDBC4DatabaseMetaData.getProcedureColumns(JDBC4DatabaseMetaData.java:106)
at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:857)
at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:630)
at com.mysql.jdbc.JDBC4CallableStatement.<init>(JDBC4CallableStatement.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.CallableStatement.getInstance(CallableStatement.java:524)
at com.mysql.jdbc.ConnectionImpl.parseCallableStatement(ConnectionImpl.java:4326)
at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:4410)
at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:4384)
at com.mysql.jdbc.LoadBalancedMySQLConnection.prepareCall(LoadBalancedMySQLConnection.java:2174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:643)
at com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:548)
at com.sun.proxy.$Proxy0.prepareCall(Unknown Source)
at com.mysql.jdbc.ReplicationConnection.prepareCall(ReplicationConnection.java:543)
at com.mysql.fabric.jdbc.FabricMySQLConnectionProxy.prepareCall(FabricMySQLConnectionProxy.java:718)
at ForumFabricPrepareCall.main(ForumFabricPrepareCall.java:9)
Caused by: java.lang.NullPointerException
at com.mysql.jdbc.CharsetMapping.getMysqlCharsetForJavaEncoding(CharsetMapping.java:582)
... 30 more
How to repeat:
Connection c = DriverManager.getConnection("jdbc:mysql:fabric://localhost:32274?fabricUsername=admin&fabricPassword=jbalint&fabricServerGroup=fabric_test1_global");
System.out.println("Catalog is '" + c.getCatalog() + "'");
c.createStatement().executeUpdate("set @x = 1");
c.prepareCall("{call x(?)}");