MySQLBackup 省略了“时间戳”列

MySQLBackup 省略了“时间戳”列

我使用 MySQLBackup 实时备份我的 MySQL 数据库。它与 MySQL Community Server 5.7 完美兼容。升级到 8.0 后,TIMESTAMP 列在备份中消失了。(8.0.11 和 8.0.14 版本之间似乎甚至存在差异:将 TIMESTAMP 替换为 DATETIME 并将 CURRENT_TIMESTAMP 保留为默认值,备份在 8.0.11 中仍然可用)。

我需要时间戳,因为数据库是由没有真实日期/时间(未连接到互联网)的 Raspberry 提供的,我查看了导出选项,但似乎都与问题无关。

这是备份的日志文件:

-- MySqlBackup.NET 2.0.9.2
-- Dump Time: 2019-02-07 09:22:47
-- --------------------------------------
-- Server version 8.0.14 MySQL Community Server - GPL

-- 
-- Create schema db_1
-- 

CREATE DATABASE IF NOT EXISTS `db_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */;
Use `db_1`;


-- Definition of tab_1
DROP TABLE IF EXISTS `tab_1`;
CREATE TABLE IF NOT EXISTS `tab_1` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `W_1` int(11) DEFAULT '0',
  `W_2` int(11) DEFAULT '0',
`Time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,  
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=66 DEFAULT CHARSET=utf8;

-- 
-- Dumping data for table tab_1
-- 

/*!40000 ALTER TABLE `tab_1` DISABLE KEYS */;
INSERT INTO `tab_1`(`ID`,`W_1`,`W_2`) VALUES          
 (12,2,2),
(13,3,3,),
(14,4,4,);
/*!40000 ALTER TABLE `tab_1` ENABLE KEYS */;


-- Dump completed on 2019-02-07 09:22:48
-- Total time: 0:0:0:0:136 (d:h:m:s:ms)

有人知道发生了什么吗?我将非常感激您的帮助!

答案1

大家好。我是这个类库的作者MySqlBackup.NET

我刚刚发现这是一个错误并且已经修复。您可以通过 Nuget 下载新包:

感谢你的支持。

对于 MySql.Data.DLL PM> Install-Package MySqlBackup.NET https://www.nuget.org/packages/MySqlBackup.NET/

对于 dotConnector Devart.Express.MySql PM> Install-Package MySqlBackup.Net.DevartExpress https://www.nuget.org/packages/MySqlBackup.Net.DevartExpress/

对于 MySqlConnector (MIT) PM> Install-Package MySqlBackup.NET.MySqlConnector https://www.nuget.org/packages/MySqlBackup.NET.MysqlConnector/

答案2

今天我发现了导致 MySQLBackup.NET 从转储中排除 TIMESTAMP 类型列的因素。

对于 Date / DateTime / TimeStamp 类型的列,删除默认的 CURRENT_TIMESTAMP,否则这些列将被丢弃。

我刚刚使用 MySQLBackup.NET 2.3.3.1 和 MySQL 服务器 8.0.17 进行了测试。无论我在 C# 代码中放置什么选项,我的 TIMESTAMP 列都不会出现在转储中。删除 DEFAULT CURRENT_TIMESTAMP 后,该列现在出现在转储中。

相关内容