TableToResourceMapping throws an exception when fetching primary key for lowercase table names on MySQL.
Here is the stack trace:
Exception in thread "main" org.compass.gps.device.jdbc.JdbcGpsDeviceException: Failed to fetch primary keys for table [person]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jms.PERSON' doesn't exist
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jms.PERSON' doesn't exist
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383)
at com.mysql.jdbc.DatabaseMetaData$7.forEach(DatabaseMetaData.java:3915)
at com.mysql.jdbc.IterateBlock.doForAll(IterateBlock.java:50)
at com.mysql.jdbc.DatabaseMetaData.getPrimaryKeys(DatabaseMetaData.java:3899)
at org.compass.gps.device.jdbc.mapping.TableToResourceMapping.generateIdMappings(TableToResourceMapping.java:112)
at org.compass.gps.device.jdbc.mapping.TableToResourceMapping.generateMappings(TableToResourceMapping.java:97)
at org.compass.gps.device.jdbc.ResultSetResourceMappingResolver.getMappingAsInputStream(ResultSetResourceMappingResolver.java:118)
at org.compass.core.config.binding.AbstractInputStreamMappingBinding.addMappingResolver(AbstractInputStreamMappingBinding.java:170)
at org.compass.core.config.CompassMappingBinding.addMappingResolver(CompassMappingBinding.java:174)
at org.compass.core.config.CompassConfiguration.addMappingResover(CompassConfiguration.java:383)
at gov.ms.masp.ps3.examples.compass.Search.main(Search.java:67)
The source that can cause it:
<I will attach>
Attached is a diff that makes the exception go away. Its basically an implementation of the discussion in http://forum.compass-project.org/thread.jspa?threadID=215460
.
Thanks!
Joey