Existem alguns truques que você pode achar úteis.
Primeiramente, o
/*! */
notação permite que você adicione código que o MySQL obedecerá, mas outros bancos de dados ignorarão, por exemplo:create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
Não é uma bala de prata, mas vai deixar você passar por cima de algumas das diferenças entre a sintaxe do MySQL e do H2. É um MySQL-ismo, então não ajudará com outros bancos de dados, mas como a maioria dos outros bancos de dados não são tão peculiares quanto o MySQL, você provavelmente não precisaria dele - migramos nosso banco de dados do MySQL para o PostgreSQL, que não suporta o
/*! */
notação, mas o PostgreSQL é semelhante ao H2 o suficiente para não precisarmos dele. Se você quiser usar uma configuração diferente para dev e prod, provavelmente é melhor ter uma configuração extra para prod. A razão para isso é que você provavelmente iniciará seu servidor dev com
play run
, e inicie seu servidor de produção com play stage; target/start
. target/start
pode usar um -Dconfig.resource
parâmetro. Por exemplo, crie um arquivo de configuração extra prod.conf
para prod que se parece com:include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
e crie um
start_prod
script que se parece com:#!/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
Em teoria, você poderia fazer o contrário e ter
application.conf
conter o prod conf e criar um dev.conf
, mas você provavelmente desejará que um script inicie o prod de qualquer maneira (você provavelmente acabará precisando de parâmetros JVM/memory/GC extras, ou para adicioná-lo a rc.d, ou qualquer outra coisa).