Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ajustando para a configuração de fuso horário padrão no RDS


Infelizmente, não é possível definir o default_timezone no RDS DB ParameterGroups, então sua tentativa já foi na direção certa.
$ rds-describe-db-parameters default | grep "time_zone"
DBPARAMETER  default_time_zone                                                                   engine-default  string   static   false

Para definir o valor global via SET GLOBAL, você precisa ter o privilégio SUPER, que não é concedido a você como usuário do RDS.

A única maneira de definir o time_zone é por conexão
mysql> SET time_zone = timezone;

Em minhas máquinas eu tentei US/Eastern com sucesso, mas tenho uma geração bastante antiga em execução.

Para determinar os fusos horários disponíveis, entre na sua caixa
mysql -h yourboxhost.rds.amazonaws.com -u <youruser> -p

e digite
mysql> SELECT * FROM mysql.time_zone_name;

Você deve obter uma lista de nomes de fuso horário instalados e válidos que você pode definir em sua instância
+----------------------------------------+--------------+
| Name                                   | Time_zone_id |
+----------------------------------------+--------------+
| Africa/Abidjan                         |            1 |
| Africa/Accra                           |            2 |
| Africa/Addis_Ababa                     |            3 |
| Africa/Algiers                         |            4 |
| Africa/Asmara                          |            5 |
| Africa/Asmera                          |            6 |
| Africa/Bamako                          |            7 |
| Africa/Bangui                          |            8 |
| Africa/Banjul                          |            9 |
| Africa/Bissau                          |           10 |
| Africa/Blantyre                        |           11 |
| Africa/Brazzaville                     |           12 |
| Africa/Bujumbura                       |           13 |
| Africa/Cairo                           |           14 |
etc...

Você precisa definir o time_zone toda vez que se conectar ao seu servidor de banco de dados

Por exemplo, se você usar a extensão php Mysqli, você pode fazer isso
$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');

Caso contrário, apenas manualmente (em termos de deixar seu conector de banco de dados fazer isso) execute o SET time_zone = '<YOUR_DESIRED_TIMEZONE>' Consulta logo depois de se conectar ao seu banco de dados