5

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

有人遇到了同样的问题(Help 希望让示例应用程序连接到 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]

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

4

1 回答 1

8

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

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

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

conf/evolutions/default/1.sql

  • 添加了 engine=innodb,以启用引用完整性
  • 用 id 字段的自动增量替换序列
  • 用“SET FOREIGN_KEY_CHECKS”替换“SET REFERENTIAL_INTEGRITY”命令
  • 用日期时间替换时间戳字段

conf/evolutions/default/2.sql

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

模型/模型.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

于 2013-04-03T11:56:13.247 回答