Er zijn een paar trucjes die je misschien handig vindt.
Ten eerste, MySQL's /*! */
notatie stelt u in staat om code toe te voegen die MySQL zal gehoorzamen, maar andere DB's zullen negeren, bijvoorbeeld:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
Het is geen wondermiddel, maar het laat je enkele van de verschillen tussen de syntaxis van MySQL en H2 op papier zetten. Het is een MySQL-isme, dus het zal niet helpen met andere databases, maar aangezien de meeste andere databases niet zo eigenzinnig zijn als MySQL, zou je het waarschijnlijk niet nodig hebben - we hebben onze database gemigreerd van MySQL naar PostgreSQL, wat niet ondersteuning van de /*! */
notatie, maar PostgreSQL is vergelijkbaar genoeg met H2 dat we het niet nodig hadden.
Als je een andere configuratie voor dev en prod wilt gebruiken, kun je waarschijnlijk het beste een extra configuratie voor prod gebruiken. De reden hiervoor is dat je waarschijnlijk je dev-server start met play run
, en start uw productserver met play stage; target/start
. target/start
kan een -Dconfig.resource
parameter. Maak bijvoorbeeld een extra configuratiebestand prod.conf
voor prod die eruitziet als:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
en maak een start_prod
script dat eruitziet als:
#!/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 theorie zou je het andersom kunnen doen en application.conf
. hebben bevatten de prod conf, en maak een dev.conf
bestand, maar je zult waarschijnlijk toch willen dat een script prod start (je zult waarschijnlijk extra JVM/memory/GC-parameters nodig hebben, of om het toe te voegen aan rc.d, of wat dan ook).