Hi, I am a new JOOQ user, and I a very excited about this library. I'd like to thank all its developers for this great contibution to the Java world.
Now to the issue. I am using MySQL 5.1, which has a couple of settings related to handling case sensitivity in object names: lower_case_file_system lower_case_table_names Those settings are described here<http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html>in detail. In Windows, the default settings are: lower_case_file_system=ON lower_case_table_names=1 which means "the file-system is case-insensitive and all schema and table names will be converted to lowercase". In order to make JOOQ work with my schema in Windows and Linux, I tried to lower_case_table_names=2, which means "preserve the case but make comparisons case-insensitive". This setting works as I want but it crashes JOOQ generation tool with the following exception: SEVERE: Error while fetching tables java.lang.NullPointerException at org.jooq.util.AbstractElementContainerDefinition.<init>(AbstractElementContainerDefinition.java:67) at org.jooq.util.AbstractTableDefinition.<init>(AbstractTableDefinition.java:64) at org.jooq.util.mysql.MySQLTableDefinition.<init>(MySQLTableDefinition.java:64) at org.jooq.util.mysql.MySQLDatabase.getTables0(MySQLDatabase.java:223) at org.jooq.util.AbstractDatabase.getTables(AbstractDatabase.java:433) at org.jooq.util.JavaGenerator.generateSchema(JavaGenerator.java:1568) at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:179) at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:170) at org.jooq.util.GenerationTool.run(GenerationTo:291)va at org.jooq.util.GenerationTool.main(GenerationTool.java:135) at org.jooq.util.GenerationTool.main(GenerationTool.java:122) Using the debugger, I found that the cause of the problem is that getSchema doesn't find schema name in the result for the query on schema names: AbstractDatabase.java: public final SchemaDefinition getSchema(String inputName) { for (SchemaDefinition schema : getSchemata()) { if (schema.getName().equals(inputName)) { return schema; } } return null; } Note case-sensitive name comparison used in the loop. After further investigation, I found that MySQL is returning lower-case schema name in the following query made by JOOQ (my schema name is 'EMP', in upper case): select TABLE_SCHEMA from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = 'EMP'; The result is: TABLE_SCHEMA ------------------------- emp Interestingly enough, a slightly different query returns schema name in upper case: select distinct TABLE_SCHEMA from INFORMATION_SCHEMA.TABLES; TABLE_SCHEMA ------------------------- information_schemaEMPmysqlperformance_schema It's really a mystery, I don't know why does MySQL change the case of schema name depending on the WHERE clause, but the fact is that it crashes JOOQ. As a workaround, I changed lower_case_table_names=0, meaning "preserve case and make case-sensitive comparison". So, in short, I had to sacrifice case insensitivity in order make JOOQ work. Regards, Alexander -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
