Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Use Mysql em dev/prod e H2 em teste


Existem alguns truques que você pode achar úteis.

Primeiramente, o /*! */ notação permite que você adicione código que o MySQL obedecerá, mas outros bancos de dados ignorarão, por exemplo:
create table Users (
  id bigint not null auto_increment,
  name varchar(40)
) /*! engine=InnoDB */

Não é uma bala de prata, mas vai deixar você passar por cima de algumas das diferenças entre a sintaxe do MySQL e do H2. É um MySQL-ismo, então não ajudará com outros bancos de dados, mas como a maioria dos outros bancos de dados não são tão peculiares quanto o MySQL, você provavelmente não precisaria dele - migramos nosso banco de dados do MySQL para o PostgreSQL, que não suporta o /*! */ notação, mas o PostgreSQL é semelhante ao H2 o suficiente para não precisarmos dele.

Se você quiser usar uma configuração diferente para dev e prod, provavelmente é melhor ter uma configuração extra para prod. A razão para isso é que você provavelmente iniciará seu servidor dev com play run , e inicie seu servidor de produção com play stage; target/start . target/start pode usar um -Dconfig.resource parâmetro. Por exemplo, crie um arquivo de configuração extra prod.conf para prod que se parece com:
include "application.conf"

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

e crie um start_prod script que se parece com:
#!/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

Em teoria, você poderia fazer o contrário e ter application.conf conter o prod conf e criar um dev.conf , mas você provavelmente desejará que um script inicie o prod de qualquer maneira (você provavelmente acabará precisando de parâmetros JVM/memory/GC extras, ou para adicioná-lo a rc.d, ou qualquer outra coisa).