Why gh-ost set time_zone to UTC when applying DML events

Offen
#1,289 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 10 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
go, mysql
Bereich
databases

Rechercherichtung

Beginne im Go-Quellcode bei ApplyDMLEventQueries und untersuche, wie dort time_zone gesetzt wird. Reproduziere den gemeldeten MySQL-5.7.26-Fall mit SYSTEM/Shanghai und einem Timestamp-DML-Ereignis und vergleiche anschließend die abgefragten Werte. Als erledigt gilt die Aufgabe, wenn eine gemeinsame Erklärung vorliegt und, falls das Verhalten unbeabsichtigt ist, eine getestete Änderung oder eine Dokumentation des erwarteten Zeitzonenverhaltens vorhanden ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Env

  • gh-ost : 1.1.2
  • mysql : 5.7.26
    • time_zone: system(ShangHai)

Bug

Mysql server is configured with time_zone=system and the server's time zone is Shanghai. The problem I encountered was that during the gh-ost run, after the insert statement involved the timestamp time field was successfully inserted, when the data was queried again, the time field increased by 8 hours.

question

Looking at the source code, I found that time_zone = '+00:00' is defined in the ApplyDMLEventQueries function, which is equal to the UTC time zone. Because insert is written in UTCtime zone, but select is read in SYSTEM time zone, the time field is increased by 8 hours.

My question is why the UTC time zone is set when applying dml event instead of using the default time zone configuration?

image
Vorherrschende Sprache
Go
Sterne
13.6k
Forks
1.4k
Ø Merge
9 T. 19 Std.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus github/gh-ost

Alle Issues in github/gh-ost

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.