Ci sono un paio di trucchi che potresti trovare utili.
Innanzitutto, /*! */
la notazione consente di aggiungere codice a cui MySQL obbedirà, ma altri DB ignoreranno, ad esempio:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
Non è un proiettile d'argento, ma ti consentirà di ripassare alcune delle differenze tra MySQL e la sintassi di H2. È un MySQL-ismo, quindi non aiuterà con altri database, ma poiché la maggior parte degli altri database non sono stravaganti come MySQL, probabilmente non ne avresti bisogno:abbiamo migrato il nostro database da MySQL a PostgreSQL, che non supporta il /*! */
notazione, ma PostgreSQL è abbastanza simile a H2 da non averne bisogno.
Se vuoi usare una configurazione diversa per dev e prod, probabilmente è meglio avere una configurazione extra per prod. Il motivo è che probabilmente avvierai il tuo server di sviluppo con play run
e avvia il tuo server di produzione con play stage; target/start
. target/start
può prendere un -Dconfig.resource
parametro. Ad esempio, crea un file di configurazione aggiuntivo prod.conf
per un prodotto simile a:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
e crea un start_prod
script che assomiglia a:
#!/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
In teoria, potresti farlo al contrario e avere application.conf
contenere il prod conf e creare un dev.conf
file, ma probabilmente vorrai comunque che uno script avvii prod (probabilmente finirai per aver bisogno di parametri JVM/memoria/GC aggiuntivi, o per aggiungerlo a rc.d o altro).