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

Brug Mysql i dev/prod og H2 i test

Der er et par tricks, som du måske kan finde nyttige.

For det første MySQL's /*! */ notation giver dig mulighed for at tilføje kode, som MySQL vil adlyde, men andre DB'er vil ignorere, for eksempel:

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

Det er ikke en sølvkugle, men den vil lade dig skrive over nogle af forskellene mellem MySQL og H2's syntaks. Det er en MySQL-isme, så det hjælper ikke med andre databaser, men da de fleste andre databaser ikke er så skæve som MySQL, ville du nok ikke have brug for det - vi migrerede vores database fra MySQL til PostgreSQL, hvilket ikke har understøtter /*! */ notation, men PostgreSQL ligner nok H2, at vi ikke havde brug for det.

Hvis du vil bruge en anden konfig til dev og prod, er det nok bedst, at du har ekstra config for prod. Grunden til dette er, at du sandsynligvis vil starte din dev-server med play run , og start din prod-server med play stage; target/start . target/start kan tage en -Dconfig.resource parameter. Opret f.eks. en ekstra konfigurationsfil prod.conf for prod, der ser ud som:

include "application.conf"

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

og opret en start_prod script, der ser ud som:

#!/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

I teorien kunne du gøre det omvendt og have application.conf indeholde prod conf, og opret en dev.conf fil, men du vil sikkert have et script til at starte prod alligevel (du vil sandsynligvis ende med at få brug for ekstra JVM/hukommelse/GC-parametre, eller at tilføje det til rc.d eller hvad som helst).



  1. Få den genererede uuid efter indsættelse af php

  2. Fejl:Timeout for inaktivitet af håndtryk i Node.js MYSQL-modul

  3. Potentielle forbedringer til ASPState

  4. Søger efter et tomt resultat (PHP, PDO og MySQL)