第一次運行程序時,將Hibernte中的hibernate.hbm2ddl.auto設置成create(或者是update),讓Hibernate幫助自動建表,但不成功,報了如下信息:
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 'type=InnoDB' at line 1
我很納悶,為什么之前沒有這樣的問題呢?難道是建表語句語法有誤?對比后,似乎不是。后來再仔細閱讀報錯信息,目光定位在“MySQL server version for the right syntax ”!!
后來,網上查找一番,發現是因為type=InnoDB在5.0以前是可以使用的,但5.1之后就不行了。如果我們把type=InnoDB改為engine=InnoDB就不會有這個問題。但是,我想使用Hibernate,自動幫我建表,怎么辦呢。這就與我們指定的數據庫方言(dialect)有關了。
之前我的配置是:
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect />
現在改為
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect />
好了,這樣問題就解決了。總結下:
hibernate中,對於mysql version5.1~5.5,都是‘MySQL5InnoDBDialect’ !!
-----------------------------------------------------------
現在的api用MySQLDialect就可以了