连接“computer-database-jpa”使用MySQL播放2.1示例应用程序

我正在玩computer-database-jpa(Java) Play Framework 2.1示例应用程序。 当我在内存数据库中使用H2时,一切正常,但是当我想将应用程序与MySQL连接时,我遇到了问题。

有人遇到了同样的问题( 帮助想要将示例应用程序连接到MySQL ),但没有解决方案。

我添加了mysql-connector (Build.scala):

 val appDependencies = Seq( .... "mysql" % "mysql-connector-java" % "5.1.18" ) 

并编辑了application.conf:

 db.default.url="jdbc:mysql://password:user@localhost/my-database" db.default.driver=com.mysql.jdbc.Driver 

当我启动应用程序并应用1.sql(进化脚本)时,我收到一个错误:

 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 'sequence company_seq start with 1000' at line 1 [ERROR:1064, SQLSTATE:42000] 

有谁知道如何解决这个问题?

我找到了解决方案 – https://github.com/opensas/openshift-play2-computerdb

进化脚本中使用的语法不符合MySQL

将计算机数据库示例应用程序从H2移植到mysql所需的更改列表

的conf /变阵/默认/ 1.SQL

  • 添加engine = innodb,以启用参照完整性
  • 用id字段的自动增量替换序列
  • 用’SET FOREIGN_KEY_CHECKS’替换’SET REFERENTIAL_INTEGRITY’命令
  • 用datetime替换时间戳字段

的conf /变阵/默认/ 2.SQL

  • 在2.sql和3.sql文件之间拆分计算机数据(避免在mysql上运行的evolutions中的bug)

车型/ Models.scala

  • 从Computer.list sql查询中删除’nulls last’
  • 修改了Computer.insert以跳过id字段(因为是mysql自动分配的)

因为我正在使用Java而不是Scala版本,所以我要更改Company.javaComputer.java文件。 我添加了@GeneratedValue注释:

 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public Long id; 

在这里你可以找到修改过的进化脚本: https : //github.com/opensas/openshift-play2-computerdb/tree/master/conf/evolutions/default