您可能会发现一些有用的技巧。
首先,MySQL 的/*! */
符号允许您添加 MySQL 将遵循的代码,但其他 DB 将忽略,例如:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
这不是灵丹妙药,但它可以让您了解 MySQL 和 H2 语法之间的一些差异。这是一个 MySQL 主义,所以它对其他数据库没有帮助,但由于大多数其他数据库不像 MySQL 那样古怪,你可能不需要它——我们将我们的数据库从 MySQL 迁移到 PostgreSQL,它没有支持/*! */
符号,但 PostgreSQL 与 H2 足够相似,我们不需要它。
如果你想为 dev 和 prod 使用不同的配置,你可能最好为 prod 提供额外的配置。这样做的原因是您可能会使用 启动您的开发服务器play run
,并使用 启动您的产品服务器play stage; target/start
。target/start
可以带-Dconfig.resource
参数。例如,prod.conf
为 prod 创建一个额外的配置文件,如下所示:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
并创建一个start_prod
如下所示的脚本:
#!/bin/sh
# Optional - you might want to do this as part of the build/deploy process instead
#play stage
target/start -Dconfig.resource=prod.conf
理论上,你可以反过来做,并application.conf
包含 prod conf,并创建一个dev.conf
文件,但你可能需要一个脚本来启动 prod(你可能最终需要额外的 JVM/memory/GC参数,或将其添加到 rc.d,或其他)。