当我使用 mysqldump 导出 mysql 数据库时,它总是产生一个 dump.sql 包含
...some other things...
/*!40101 SET character_set_client = utf8*/;
...some other things...
Run Code Online (Sandbox Code Playgroud)
这是我使用的 mysqldump 命令:
mysqldump -u root -p databaseName -R -E --single-transaction --default-character-set=utf8mb4 > dump.sql
Run Code Online (Sandbox Code Playgroud)
mysql数据库的字符集是utf8mb4
而不是utf8
,字符相关的变量是:
...some other things...
/*!40101 SET character_set_client = utf8*/;
...some other things...
Run Code Online (Sandbox Code Playgroud)
为什么mysqldump总是添加
/*!40101 SET character_set_client = utf8*/
而不是
/*!40101 SET character_set_client = utf8mb4*/
?
如果/*!40101 SET character_set_client = utf8*/
使用会发生什么?
我们可以使用mysqldump/*!40101 SET character_set_client = utf8mb4*/
吗?
那种特殊类型的注释说“如果运行一个早于 4.1.1 的版本,则将此作为注释;否则执行它”。
utf8mb4
在 5.5.3 中出现,因此“正确”版本将是
/*!50503 SET character_set_client = utf8mb4*/
Run Code Online (Sandbox Code Playgroud)
如果您的 mysqldump 和 mysql 版本比 5.5.3 新,保留它也无妨40101
。如果您确实尝试在 5.5.3 之前的 mysql 上加载它,SET
则可能会抱怨。
至于为什么 mysqldump 不说 50503 - 我怀疑这是一个错误。在http://bugs.mysql.com 上归档。
归档时间: |
|
查看次数: |
6691 次 |
最近记录: |