Проблема: Дамп MySQL (MariaDB) видає час полів timestamp для TIME_ZONE='+00:00'
Для прикладу, є така табличка:
CREATE TABLE `test` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(20) NOT NULL DEFAULT '',
`dt` datetime NOT NULL DEFAULT '2000-01-01 10:00:00',
`upd` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE
current_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 - той самий, що і записаний в базі.