sql >> Databáze >  >> RDS >> Mysql

Použijte Mysql v dev/prod a H2 v testu

Existuje několik triků, které by se vám mohly hodit.

Za prvé, MySQL /*! */ notace vám umožňuje přidat kód, který bude MySQL poslouchat, ale ostatní databáze budou ignorovat, například:

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

Není to stříbrná kulka, ale umožní vám popsat některé rozdíly mezi MySQL a syntaxí H2. Je to MySQL-ismus, takže to nepomůže s jinými databázemi, ale protože většina ostatních databází není tak svérázná jako MySQL, pravděpodobně byste to nepotřebovali - migrovali jsme naši databázi z MySQL na PostgreSQL, která však podporovat /*! */ notace, ale PostgreSQL je dostatečně podobný H2, že jsme ho nepotřebovali.

Pokud chcete použít jinou konfiguraci pro dev a prod, pravděpodobně bude nejlepší mít extra konfiguraci pro prod. Důvodem je to, že pravděpodobně spustíte svůj dev server pomocí play run a spusťte svůj prod server pomocí play stage; target/start . target/start může mít -Dconfig.resource parametr. Vytvořte například další konfigurační soubor prod.conf pro produkt, který vypadá takto:

include "application.conf"

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

a vytvořte start_prod skript, který vypadá takto:

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

Teoreticky byste to mohli udělat obráceně a mít application.conf obsahovat prod conf a vytvořit dev.conf soubor, ale pravděpodobně budete chtít skript pro spuštění prod tak jako tak (pravděpodobně nakonec budete potřebovat další parametry JVM/paměť/GC nebo je přidat do rc.d nebo cokoli jiného).



  1. jaký je lepší způsob, jak změnit znakovou sadu pro velké datové tabulky?

  2. Tento výsledek je pouze dopředná sada výsledků, volání rewind() po pohybu vpřed není podporováno - Zend

  3. Problém s dotazem MySQL pomocí AVG()

  4. 'Nelze převést hodnotu data/času MySQL na System.DateTime', KDYŽ nepoužíváte datum - C#.Net