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

Luk*_* R. 5 java mysql playframework playframework-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"
)
Run Code Online (Sandbox Code Playgroud)

并编辑了application.conf:

db.default.url="jdbc:mysql://password:user@localhost/my-database"
db.default.driver=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序并应用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]
Run Code Online (Sandbox Code Playgroud)

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

Luk*_* R. 8

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

Evolution脚本中使用的语法不符合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;
Run Code Online (Sandbox Code Playgroud)

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