如果不存在,则强制 mysqldump 使用 CREATE DATABASE

Posted

技术标签:

【中文标题】如果不存在,则强制 mysqldump 使用 CREATE DATABASE【英文标题】:Force mysqldump to use CREATE DATABASE IF NOT EXISTS 【发布时间】:2021-08-03 08:40:09 【问题描述】:

我一直在通过 mysqldump documentation 获取 MariaDB。

如何强制mysqldump 输出CREATE DATABASE IF NOT EXISTS

我做过的最好的事情是添加 --databases 标志:

mysqldump -u root -p --skip-set-charset --databases --default-character-set=latin1 database_name > /home/database_name.sql

但是输出如下:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database_name` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci */;

我不能将IF NOT EXISTS 注释掉。我错过了什么?

另外:因为有人需要对此发表评论:latin1 字符集是对 No mapping for the Unicode character exists in the target multi-byte code page 错误消息的修复,可以是 solved by this answer 如果你也执行两个终端命令。

【问题讨论】:

为什么要将IF NOT EXISTS 注释掉? @GeorgRichter 我明确希望它被注释掉! 【参考方案1】:

如果您使用的 MySQL 版本 /*!32312 IF NOT EXISTS */ 仅被解释为评论。

更多详情请查看 MariaDB 知识库中的"Comment syntax"。

【讨论】:

我真的必须阅读 - 所以简而言之,MariaDB 和 MySQL 支持语法 cmets 内部。这类似于 Internet Explorer 从 IE 5.5 到 IE10 的条件 cmets。所以这里发生的是代码告诉 MariaDB 如果它不匹配更大的那个版本,则不要运行那个 sn-p,这很奇怪,因为它缺少句点,因此对解释非常开放。因此,只要代码高于 3.23.12 版本,代码就会以 CREATE DATABASE IF NOT EXISTS 运行。

以上是关于如果不存在,则强制 mysqldump 使用 CREATE DATABASE的主要内容,如果未能解决你的问题,请参考以下文章

如果项目文件夹已经存在,则强制 django-admin startproject

检查现有文件并返回文件名

linux的cp命令的交互式用法和强制覆盖用法的问题(2)

mv:移动文件或改名

windows下如何强制git使用LF而不是CR+LF?

如果目标目录不存在,如何强制提取失败?