sql >> Databasteknik >  >> RDS >> Mysql

Hur ställer man in tidszonen till UTC i Play Framework 2.0 för både produktion och tester?

Det här var enklare än vi hade förväntat oss.

Först i application.conf , konfigurera JDBC URL med parametrarna som beskrivs i en annan StackOverflow-fråga :

# Set MySQL Connector/J to use UTC server connection and time conversions
#   see https://stackoverflow.com/questions/10488529/gettimestamp-does-timezone-converstion-twice-in-mysql-jdbc-connector
db.default.url="jdbc:mysql://localhost/database?useGmtMillisForDatetimes=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&useTimezone=true&serverTimezone=UTC"

För det andra, i Build.scala , ställ in Java-systemegenskapen och standard:

// Setting this property here forces the JVM to run in UTC time, 
// both for test (`play test`) and development (`play start`) modes, 
// but not for production (`play dist`).
System.setProperty("user.timezone", "GMT")
TimeZone.setDefault(TimeZone.getTimeZone("GMT"))

Dessa två ändringar tillsammans kommer att hantera båda test (play test ) och utveckling (play start ) lägen.

För produktion (play dist ), måste man fortfarande ställa in egenskapen innan lansering. Till exempel av:

  1. Redigera den genererade start skript för att lägga till export _JAVA_OPTIONS=-Duser.timezone=GMT
  2. Anropar start skript med -Duser.timezone=GMT
  3. Lansering inom en befintlig JVM efter anrop av System.setProperty("user.timezone", "GMT")



  1. Byter kolumnvärden i MySQL

  2. Konvertera 'smalldatetime' till 'time' i SQL Server (T-SQL-exempel)

  3. Uppdatera flera kolumner i MERGE-satsen ORACLE

  4. Du måste installera postgresql-server-dev-X.Y för att bygga ett tillägg på serversidan eller libpq-dev för att bygga ett klientprogram