Istnieje kilka sztuczek, które mogą Ci się przydać.
Po pierwsze, /*! */
notacja pozwala na dodanie kodu, który MySQL będzie przestrzegał, ale inne bazy danych zignorują, na przykład:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
To nie jest srebrna kula, ale pozwoli ci omówić niektóre różnice między składnią MySQL i H2. Jest to MySQL-ism, więc nie pomoże z innymi bazami danych, ale ponieważ większość innych baz danych nie jest tak dziwaczna jak MySQL, prawdopodobnie nie będziesz jej potrzebować - przenieśliśmy naszą bazę danych z MySQL do PostgreSQL, co nie obsługuje /*! */
notacji, ale PostgreSQL jest na tyle podobny do H2, że nie potrzebowaliśmy go.
Jeśli chcesz użyć innej konfiguracji dla dev i prod, prawdopodobnie najlepiej będzie mieć dodatkową konfigurację dla prod. Powodem tego jest to, że prawdopodobnie uruchomisz swój serwer deweloperski za pomocą play run
, i uruchom serwer prod z etapem odtwarzania play stage; target/start
. target/start
może wziąć -Dconfig.resource
parametr. Na przykład utwórz dodatkowy plik konfiguracyjny prod.conf
dla produktu, który wygląda tak:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
i utwórz start_prod
skrypt, który wygląda tak:
#!/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
Teoretycznie możesz zrobić to odwrotnie i mieć application.conf
zawierać prod conf i utworzyć plik dev.conf
pliku, ale prawdopodobnie będziesz chciał, aby skrypt i tak uruchomił prod (prawdopodobnie będziesz potrzebować dodatkowych parametrów JVM/pamięci/GC lub dodać go do rc.d lub czegokolwiek).