Model generation crashes with MySQL DB

22 views
Skip to first unread message

Karl Hagen

unread,
Apr 13, 2014, 12:23:56 AM4/13/14
to minute...@googlegroups.com
I'm eager to try out minuteProject, as it seems to be just what I need, but while I can run the demos just fine, it crashes when I try to link to my own MySQL database. I've tried this on a Mac and on Windows, with the console gui and directly from the command line, and I get the same stack trace. I'm using minuteProject 0.8.6.1, Java 1.7, and MySQL 5.6.17. Any ideas?

Output:

Exception in thread "AWT-EventQueue-0" org.apache.ddlutils.DatabaseOperationException: java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'keys WHERE 1 = 0' at line 1
    at org.apache.ddlutils.platform.PlatformImplBase.readModelFromDatabase(PlatformImplBase.java:1891)
    at org.apache.ddlutils.platform.PlatformImplBase.readModelFromDatabase(PlatformImplBase.java:1869)
    at net.sf.minuteProject.configuration.bean.model.data.impl.DDLUtils.DatabaseDDLUtils.loadDatabase(DatabaseDDLUtils.java:76)
    at net.sf.minuteProject.configuration.bean.model.data.impl.DDLUtils.DatabaseDDLUtils.<init>(DatabaseDDLUtils.java:58)
    at net.sf.minuteProject.configuration.bean.model.data.DataModelFactory.getDatabase(DataModelFactory.java:18)
    at net.sf.minuteProject.configuration.bean.DataModel.loadDatabase(DataModel.java:49)
    at net.sf.minuteProject.application.ModelGenerator.loadModel(ModelGenerator.java:254)
    at net.sf.minuteProject.application.ModelViewGenerator.loadModel(ModelViewGenerator.java:64)
    at net.sf.minuteProject.application.ModelGenerator.getEnrichedModel(ModelGenerator.java:200)
    at net.sf.minuteProject.application.ModelGenerator.generate(ModelGenerator.java:169)
    at net.sf.minuteProject.application.AbstractGenerator.generate(AbstractGenerator.java:219)
    at net.sf.minuteProject.console.panel.TargetPanel$ClickListener.actionPerformed(TargetPanel.java:90)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'keys WHERE 1 = 0' at line 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3020)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2949)
    at com.mysql.jdbc.Statement.executeQuery(Statement.java:959)
    at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)
    at org.apache.ddlutils.platform.JdbcModelReader.determineAutoIncrementFromResultSetMetaData(JdbcModelReader.java:1152)
    at org.apache.ddlutils.platform.mysql.MySqlModelReader.readTable(MySqlModelReader.java:67)
    at org.apache.ddlutils.platform.JdbcModelReader.readTables(JdbcModelReader.java:521)
    at org.apache.ddlutils.platform.JdbcModelReader.getDatabase(JdbcModelReader.java:476)
    at org.apache.ddlutils.platform.JdbcModelReader.getDatabase(JdbcModelReader.java:436)
    at org.apache.ddlutils.platform.PlatformImplBase.readModelFromDatabase(PlatformImplBase.java:1884)
    ... 47 more

florian adler

unread,
Apr 13, 2014, 2:15:30 AM4/13/14
to minute...@googlegroups.com
Hi Karl,

Thanks for trying Minuteproject.

Minuteproject is using DDLUtils.jar which causes the error.
I think it comes from the fact that you have a table or view named keys which is the reverved word in mysql (https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)
If you change your keys into keys_ it should work.


But maybe I should patch to wrap with quote ' to prevent reversed word issue.

Best regards,

Florian.



--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "minuteproject".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse minuteprojec...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Karl Hagen

unread,
Apr 13, 2014, 11:34:01 AM4/13/14
to minute...@googlegroups.com
Thanks, Florian. It was just as you suggested. I refactored the DB and it generated successfully. Wrapping with quotes would be a good bug fix, though, as I can see plenty of cases where altering the table names is not feasible for a developer.

florian adler

unread,
Apr 13, 2014, 3:26:34 PM4/13/14
to minute...@googlegroups.com
Hi Karl,

Thanks for your feed back, and I totally agree.

Some db like mssql allow space in table name, in mysql you can use # (like the joomla db).

I will try to fix it because it is a limitation in DDLUtils.

Best regards,

Florian.

Florian Adler

unread,
May 31, 2014, 4:53:38 AM5/31/14
to minute...@googlegroups.com, Karl Hagen
Hello Karl,

The problem with the reserved key words should be solved in the new distribution (minuteproject 0.8.7)

Best regards,

Florian.
Reply all
Reply to author
Forward
0 new messages