Има няколко трика, които може да ви бъдат полезни.
Първо, /*! */
нотацията ви позволява да добавяте код, на който MySQL ще се подчинява, но други DB ще игнорират, например:
create table Users (
id bigint not null auto_increment,
name varchar(40)
) /*! engine=InnoDB */
Това не е сребърен куршум, но ще ви позволи да разгледате някои от разликите между MySQL и синтаксиса на H2. Това е MySQL-изъм, така че няма да помогне с други бази данни, но тъй като повечето други бази данни не са толкова странни като MySQL, вероятно няма да имате нужда от него - мигрирахме нашата база данни от MySQL към PostgreSQL, което не поддържа /*! */
нотация, но PostgreSQL е достатъчно подобен на H2, че не ни е нужен.
Ако искате да използвате различна конфигурация за dev и prod, вероятно е най-добре да имате допълнителна конфигурация за prod. Причината за това е, че вероятно ще стартирате вашия dev сървър с play run
, и стартирайте своя prod сървър с play stage; target/start
. target/start
може да вземе -Dconfig.resource
параметър. Например, създайте допълнителен конфигурационен файл prod.conf
за продукт, който изглежда така:
include "application.conf"
# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...
и създайте start_prod
скрипт, който изглежда така:
#!/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
На теория можете да го направите обратното и да имате application.conf
съдържа prod conf и създайте dev.conf
файл, но вероятно ще искате скрипт, който да стартира prod така или иначе (вероятно ще се нуждаете от допълнителни параметри на JVM/memory/GC или да го добавите към rc.d или каквото и да било).