mysqldump创建条件注释,这些注释在还原时会导致错误

mysqldump创建条件注释,这些注释在还原时会导致错误,mysql,conditional-comments,Mysql,Conditional Comments,使用mysqldump创建的mySQL转储包含如下条件注释: /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wp_commentmeta` ( `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `comment_id` bigint(

使用mysqldump创建的mySQL转储包含如下条件注释:

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `wp_commentmeta` (
  `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
  PRIMARY KEY (`meta_id`),
  KEY `comment_id` (`comment_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
或者这个:

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
在将转储导入回数据库时,它们会导致错误,因为

@saved_cs_client
@OLD_SQL_MODE
...
是空的。“无法将字符设置为空”或类似

当我删除所有这些条件注释时,导入没有问题,一切都很好

我的问题是: 保存是删除这些注释还是在SQL错误时强制导入? 这些语句有哪些功能


我知道有些变量会被存储,并且在所有操作完成后会被恢复。但是为什么呢?

看看这是否有助于解释什么是条件注释。但是其中有一点是关于删除它们和关于它的建议(基本上是-不)这些值都不应该为空,除非您正在编辑或操作转储文件,并且操作不当,否则会丢失文件中先前应该设置它们的语句。您是否以任何方式修改转储文件?如果没有,您正在运行哪个版本的mysqldump实用程序?使用
mysqldump-V
查找此文件。我不修改转储文件。版本issee如果这有助于解释什么是条件注释。但是其中有一点关于删除它们和关于它的建议(基本上是-不)这些值都不应该为空,除非您正在编辑或操作转储文件,并且操作不当,否则会丢失文件中先前应该设置它们的语句。您是否以任何方式修改转储文件?如果没有,您正在运行哪个版本的mysqldump实用程序?使用
mysqldump-V
查找此文件。我不修改转储文件。版本是