Mysql
 sql >> Database >  >> RDS >> Mysql

Usa Mysql in dev/prod e H2 in test

Ci sono un paio di trucchi che potresti trovare utili.

Innanzitutto, /*! */ la notazione consente di aggiungere codice a cui MySQL obbedirà, ma altri DB ignoreranno, ad esempio:

create table Users (
  id bigint not null auto_increment,
  name varchar(40)
) /*! engine=InnoDB */

Non è un proiettile d'argento, ma ti consentirà di ripassare alcune delle differenze tra MySQL e la sintassi di H2. È un MySQL-ismo, quindi non aiuterà con altri database, ma poiché la maggior parte degli altri database non sono stravaganti come MySQL, probabilmente non ne avresti bisogno:abbiamo migrato il nostro database da MySQL a PostgreSQL, che non supporta il /*! */ notazione, ma PostgreSQL è abbastanza simile a H2 da non averne bisogno.

Se vuoi usare una configurazione diversa per dev e prod, probabilmente è meglio avere una configurazione extra per prod. Il motivo è che probabilmente avvierai il tuo server di sviluppo con play run e avvia il tuo server di produzione con play stage; target/start . target/start può prendere un -Dconfig.resource parametro. Ad esempio, crea un file di configurazione aggiuntivo prod.conf per un prodotto simile a:

include "application.conf"

# Extra config for prod - this will override the dev values in application.conf
db.default.driver=...
db.default.url=...
...

e crea un start_prod script che assomiglia a:

#!/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 teoria, potresti farlo al contrario e avere application.conf contenere il prod conf e creare un dev.conf file, ma probabilmente vorrai comunque che uno script avvii prod (probabilmente finirai per aver bisogno di parametri JVM/memoria/GC aggiuntivi, o per aggiungerlo a rc.d o altro).