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

Uoverensstemmelse mellem DATETIME-værdier i H2- og MySQL-databaser indsat fra Java/Kotlin

Så det ser ud til, at rettelsen var at indstille UTC-tidszone for JDBC-forbindelsen (i stedet for JVM):

spring.jpa.properties.hibernate.jdbc.time_zone=UTC

og den er afhængig af at bruge Instant for at holde værdien på Java-siden og med created_at felt med DATETIME type i MySQL og H2.

Den forkortede resulterende kotlin-kode er:

@Entity
data class SomeEntity(
    val createdAt: Instant = Instant.now() // default created date is current UTC time
)

val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd H:mm:ss")

createdAt = LocalDateTime.parse("2012-11-30 16:13:21", dateTimeFormatter).toInstant(ZoneOffset.UTC)

Ideer hentet fra kommentarer fra "Joop Eggen", dette og dette artikel.

Bonus

Jeg gætter på, at hvis du læser dette, har du muligvis også brug for hjælp til fejlfinding af SQL-forespørgsler.

1. For at udskrive SQL-forespørgsler, der kører på H2, skal du tilføje TRACE_LEVEL_FILE=2 og TRACE_LEVEL_SYSTEM_OUT=2 til forbindelsesstreng (se her ):

spring.datasource.url=jdbc:h2:mem:dbname;TRACE_LEVEL_FILE=2;TRACE_LEVEL_SYSTEM_OUT=2;

2. Sådan aktiverer du dvalelogfiler:

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.type=TRACE

3. For at aktivere forespørgselslogfiler i MySQL (en af ​​fremgangsmåderne, brug ikke på produktions-db!):

SET GLOBAL general_log = 'ON';
SET global log_output = 'table';
select * from mysql.general_log ORDER BY event_time DESC;



  1. dpkg:fejlbehandling af pakken mysql-server (afhængighedsproblemer)?

  2. Opret flere Postgres-forekomster på samme maskine

  3. ORA-06508:PL/SQL:kunne ikke finde den programenhed, der kaldes

  4. Hvordan opretter man materialiserede visninger i SQL Server?