Nous avons récemment passé une instance RDS et avons remarqué que le groupe de nos tâches de base de données a été déclenché 4 heures plus tôt que nécessaire. Pour enquêter plus loin, le problème est causé par le paramètre Time-Zone par défaut (UTC) sur l'instance RDS. Étant donné que ce paramètre ne peut pas être modifié, nous souhaitons résoudre le problème sur le niveau de code mondial dans toutes nos applications à l'aide de cette instance de base de données. J'ai essayé de définir la zone horaire sur l'instance de base de données que je crée à "US / Est" en utilisant
set GLOBAL time_zone = 'US/Eastern'" OR set time_zone = 'US/Eastern'"
5 Réponses :
Malheureusement, il n'est pas possible de définir la valeur par défaut_timezone dans les paramètres de paramètres RDS DB afin que votre tentative ait déjà été la bonne direction.
$mysqli = mysqli_init(); mysqli_options($mysqli,MYSQLI_INIT_COMMAND,"SET time_zone = 'Africa/Brazzaville'" ); mysqli_real_connect($mysqli,$host, $user, $pass,$dbName) or die ('Unable to connect');
Si vous venez de changer SET TIME_ZONE = 'US / EASTRY' CODE> TO
SET TIME_ZONE = '-5: 00' CODE> Vous pouvez éviter le problème sur MySQL ne reconnaissant pas les fuseaux de la Timezon. Rds par défaut.
@Ryanweir, prudent avec les économies d'été / heure d'été, etc. Si vous utilisez des offices d'heure brute
TLDR;
Créer un schéma "partagé" que tous vos utilisateurs ont effectué un accès à l'accès à, créez une SPROC qui modifie le fuseau horaire de la session et modifier le paramètre init_connect MySQL pour l'appeler. P>
Je n'ai pu obtenir que cela fonctionner avec l'utilisateur () à la place de courant_user (), savez-vous pourquoi votre solution semble fonctionner pour tout le monde, mais moi avec Current_User (); La chose étrange est actuelle_user () renvoie la même chose de la ligne de commande Juste dans le contexte de Init_Connect, il renvoie réellement l'utilisateur maître initial que vous créez avec RDS quel que soit l'utilisateur qui se connecte à MySQL. J'ai vérifié cela en modifiant la procédure pour insérer un enregistrement avec la valeur de courant_utilisateur ();
La solution de @Thomas Paine fonctionne pour moi, sauf que je devais à l'utilisateur utilisateur () code> au lieu de
actuel_user () code> comme dans le contexte de
init_connect code> Current_user () renvoie l'utilisateur maître RDS. (Par maître, je ne veux pas dire RDSadmin, qui est l'utilisateur racine réel, mais l'utilisateur créé avec l'instance de base de données avec la plupart des privilèges.) P>
Le réglage Time_Zone des instances de base de données RDS peut maintenant être modifié: https://aws.amazon.com/de/premiumsupport/knowledge-center/rds-change-time-zone/ P>
Il est important de noter que cela doit être modifié sur le groupe de paramètres de cluster (au moins pour Aurora MySQL). Le groupe de paramètres DB n'a que par défaut_time_zone qui n'est pas modifié.
J'ai fait les étapes suivantes afin que je puisse changer le fuseau horaire p>
Connectez-vous à RDS et créez un nouveau groupe de paramètres. p> li>
Modifier le groupe de paramètres nouvellement créé P> LI>
Définir TimeZone Ex: Asia / Calcutta et enregistrer les modifications p> li>
Modifier l'instance RDS, modifiez le groupe de paramètres de DB au groupe de paramètres nouvellement créé P> li>
instance RDS P> LI> ol>
Lorsque j'essaie ceci, Time_Zone n'est pas une option et default_Time_Zone n'est pas modifiable ... (même dans mon groupe de paramètres nouvellement créé) - à Aurora
@wewebguy vous essayez dans le groupe de paramètres DB, vous devez essayer dans le groupe de paramètres de cluster.
Cela fonctionnait, mais je devais en fait éditer le cluster, pas l'instance à l'étape 4
Quel type de base de données est-ce? Mysql?