Existuje několik triků, které by se vám mohly hodit.
Za prvé, MySQL /*! */
notace vám umožňuje přidat kód, který bude MySQL poslouchat, ale ostatní databáze budou ignorovat, například:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
Není to stříbrná kulka, ale umožní vám popsat některé rozdíly mezi MySQL a syntaxí H2. Je to MySQL-ismus, takže to nepomůže s jinými databázemi, ale protože většina ostatních databází není tak svérázná jako MySQL, pravděpodobně byste to nepotřebovali - migrovali jsme naši databázi z MySQL na PostgreSQL, která však podporovat /*! */
notace, ale PostgreSQL je dostatečně podobný H2, že jsme ho nepotřebovali.
Pokud chcete použít jinou konfiguraci pro dev a prod, pravděpodobně bude nejlepší mít extra konfiguraci pro prod. Důvodem je to, že pravděpodobně spustíte svůj dev server pomocí play run
a spusťte svůj prod server pomocí play stage; target/start
. target/start
může mít -Dconfig.resource
parametr. Vytvořte například další konfigurační soubor prod.conf
pro produkt, který vypadá takto:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
a vytvořte start_prod
skript, který vypadá takto:
#!/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
Teoreticky byste to mohli udělat obráceně a mít application.conf
obsahovat prod conf a vytvořit dev.conf
soubor, ale pravděpodobně budete chtít skript pro spuštění prod tak jako tak (pravděpodobně nakonec budete potřebovat další parametry JVM/paměť/GC nebo je přidat do rc.d nebo cokoli jiného).