sql >> Base de Datos >  >> RDS >> Mysql

Use Mysql en desarrollo/producción y H2 en prueba

Hay un par de trucos que te pueden resultar útiles.

En primer lugar, /*! */ La notación le permite agregar código que MySQL obedecerá, pero otras bases de datos ignorarán, por ejemplo:

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

No es una bala de plata, pero le permitirá ocultar algunas de las diferencias entre la sintaxis de MySQL y H2. Es un MySQL-ismo, por lo que no ayudará con otras bases de datos, pero dado que la mayoría de las otras bases de datos no son tan peculiares como MySQL, probablemente no lo necesite:migramos nuestra base de datos de MySQL a PostgreSQL, que no lo hace. apoyar el /*! */ notación, pero PostgreSQL es lo suficientemente similar a H2 que no lo necesitábamos.

Si desea utilizar una configuración diferente para desarrollo y producción, probablemente sea mejor que tenga una configuración adicional para producción. La razón de esto es que probablemente iniciará su servidor de desarrollo con play run , e inicia tu servidor prod con play stage; target/start . target/start puede tomar un -Dconfig.resource parámetro. Por ejemplo, cree un archivo de configuración adicional prod.conf para prod que se parece a:

include "application.conf"

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

y crea un start_prod guión que se parece 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

En teoría, podría hacerlo al revés y tener application.conf contener la configuración de producción y crear un dev.conf archivo, pero probablemente querrá un script para iniciar la producción de todos modos (probablemente termine necesitando parámetros JVM/memoria/GC adicionales, o para agregarlo a rc.d, o lo que sea).