Проблема: Дамп MySQL (MariaDB) видає час полів timestamp для TIME_ZONE='+00:00'
Для прикладу, є така табличка:
CREATETABLE `test` (`id`smallint(5) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,`name`varchar(20) NOT NULLDEFAULT'',`dt`datetimeNOT NULLDEFAULT'2000-01-01 10:00:00',`upd`timestampNOT NULLDEFAULTcurrent_timestamp() ONUPDATEcurrent_timestamp()) ENGINE=MyISAM
Вносимо дані:
INSERT INTO test (name, dt) VALUES ('Peter',NOW());INSERT INTO test (name, dt) VALUES ('Alex',NOW());
Перевіряємо:
select * from test;
| id | name | dt | upd |
| 1 | Peter | 2023-04-14 11:36:42 | 2023-04-14 11:36:42 |
| 2 | Alex | 2023-04-14 11:38:05 | 2023-04-14 11:38:05 |
Все ОК.
Робимо mysqldump, отримуємо:
-- MariaDB dump 10.19 Distrib 10.5.19-MariaDB, for debian-linux-gnu (x86_64).../*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;...INSERT INTO`test`VALUES(1,'Peter','2023-04-14 11:36:42','2023-04-14 08:36:42'),(2,'Alex','2023-04-14 11:38:05','2023-04-14 08:38:05');.../*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;...
Час в полі timestamp - на 3 години менший. Це створює певні проблеми в роботі...
Виправляємо:
sudo nano /etc/mysql/conf.d/time_zone.cnf
(створюємо файл, якщо нема) і додаємо в нього:
[mysqldump]
tz-utc=false
Перевіряємо, зробивши новий дамп - все ОК. З дампу пропали рядки про time_zone
/* ... TIME_ZONE= ... */;, а час колонок timestamp - той самий, що і записаний в базі.