Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So legen Sie die Datenbankzeitzone für eine AWS RDS-Instance fest

Vor dem Rest meiner Antwort möchte ich nur empfehlen, dass es Ihnen jetzt und in Zukunft viel Ärger ersparen wird, wenn Sie die Möglichkeit haben, Ihre Anwendung auf die Verwendung von UTC umzustellen.

Angesichts des Kontexts Ihrer Frage gehe ich jedoch davon aus, dass dies keine Option ist und dass Sie ein System anpassen, das für die Verwendung von MySQL in einer herkömmlichen Serverumgebung entwickelt wurde, in der Sie einfach die Zeitzone ändern können, und dass es dafür eine Codelogik gibt erwartet diese Zeitzone und kann nicht einfach an UTC angepasst werden.

Aber wenn Sie es wirklich als PST speichern müssen, lesen Sie weiter.

Sie haben Recht, dass mySql standardmäßig die Zeitzone des Servers für die Zeitstempelspeicherung verwendet, aber Ihre Annahme, dass die Zeitzonen von RDS-Instances basierend auf der AWS-Region, in der sie gestartet werden, eingestellt sind, ist falsch - Alle RDS-Instanzen werden mit ihrer Zeitzone auf UTC gestartet, und diese Konfiguration kann nicht geändert werden:

Ihre einzige Möglichkeit besteht also darin, die Zeitzone für jede Verbindung, die Ihre Anwendung mit der Datenbankinstanz herstellt, auf PST einzustellen. Sie können den SET SESSION time_zone = 'PST' verwenden Abfrage, die bei jeder Verbindung ausgeführt werden soll, die eine Anwendung herstellt, indem Sie die zwei Schritte befolgen, die hier zu finden sind :

  1. Erstellen Sie die folgende gespeicherte Prozedur (UTC-8 ist PST):

  2. Stellen Sie eine Verbindung zu Ihrer Instanz her und führen Sie den folgenden Befehl aus:

  3. Möglicherweise müssen Sie EXECUTE gewähren Berechtigungen für die Benutzer, die sich mit der Datenbank verbinden, andernfalls erhalten Sie möglicherweise einen Verbindungsfehler:

Jetzt sollte jede Abfrage, die von einem beliebigen Client für Ihre RDS-Instanz ausgeführt wird, PST verwenden, ohne die Anwendungslogik zu ändern und ohne dass zuvor in der Datenbank gespeicherte Zeitstempel aktualisiert werden müssen.