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)
有谁知道如何解决这个问题?
我找到了解决方案 - 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.java和Computer.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
| 归档时间: |
|
| 查看次数: |
1728 次 |
| 最近记录: |