Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używaj Mysql w dev/prod i H2 w teście

Istnieje kilka sztuczek, które mogą Ci się przydać.

Po pierwsze, /*! */ notacja pozwala na dodanie kodu, który MySQL będzie przestrzegał, ale inne bazy danych zignorują, na przykład:

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

To nie jest srebrna kula, ale pozwoli ci omówić niektóre różnice między składnią MySQL i H2. Jest to MySQL-ism, więc nie pomoże z innymi bazami danych, ale ponieważ większość innych baz danych nie jest tak dziwaczna jak MySQL, prawdopodobnie nie będziesz jej potrzebować - przenieśliśmy naszą bazę danych z MySQL do PostgreSQL, co nie obsługuje /*! */ notacji, ale PostgreSQL jest na tyle podobny do H2, że nie potrzebowaliśmy go.

Jeśli chcesz użyć innej konfiguracji dla dev i prod, prawdopodobnie najlepiej będzie mieć dodatkową konfigurację dla prod. Powodem tego jest to, że prawdopodobnie uruchomisz swój serwer deweloperski za pomocą play run , i uruchom serwer prod z etapem odtwarzania play stage; target/start . target/start może wziąć -Dconfig.resource parametr. Na przykład utwórz dodatkowy plik konfiguracyjny prod.conf dla produktu, który wygląda tak:

include "application.conf"

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

i utwórz start_prod skrypt, który wygląda tak:

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

Teoretycznie możesz zrobić to odwrotnie i mieć application.conf zawierać prod conf i utworzyć plik dev.conf pliku, ale prawdopodobnie będziesz chciał, aby skrypt i tak uruchomił prod (prawdopodobnie będziesz potrzebować dodatkowych parametrów JVM/pamięci/GC lub dodać go do rc.d lub czegokolwiek).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj wiele wierszy w jednym zapytaniu MySQL

  2. Baza danych zwróciła nieprawidłową wartość w QuerySet.dates()

  3. czy każde wywołanie mysql_real_escape_string wymaga kolejnej podróży do bazy danych?

  4. mysql_escape_string luki w zabezpieczeniach

  5. Automatyczne zamknięcie połączenia db w php?