Det finns ett par knep som du kan ha nytta av.
För det första, MySQL:s /*! */
notation låter dig lägga till kod som MySQL kommer att lyda, men andra DB:er kommer att ignorera, till exempel:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
Det är inte en silverkula, men det låter dig skriva över några av skillnaderna mellan MySQL och H2:s syntax. Det är en MySQL-ism, så det hjälper inte med andra databaser, men eftersom de flesta andra databaser inte är lika udda som MySQL, skulle du förmodligen inte behöva det - vi migrerade vår databas från MySQL till PostgreSQL, vilket inte gör det. stödja /*! */
notation, men PostgreSQL är tillräckligt lik H2 för att vi inte behövde det.
Om du vill använda en annan konfiguration för dev och prod, är det förmodligen bäst att du har extra konfiguration för prod. Anledningen till detta är att du förmodligen kommer att starta din dev-server med play run
, och starta din prod-server med play stage; target/start
. target/start
kan ta en -Dconfig.resource
parameter. Skapa till exempel en extra konfigurationsfil prod.conf
för prod som ser ut som:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
och skapa en start_prod
skript som ser ut så här:
#!/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
I teorin kan du göra det tvärtom och ha application.conf
innehålla prod conf och skapa en dev.conf
fil, men du vill förmodligen ha ett skript för att starta prod ändå (du kommer förmodligen att behöva extra JVM/minne/GC-parametrar, eller lägga till det i rc.d, eller vad som helst).