如果不存在,则强制 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的主要内容,如果未能解决你的问题,请参考以下文章