2015-10-07 102 views
1

我使用Mamp 3.4。我有一个有3个表的小型数据库。当我上传的数据库文件到服务器我有一个错误:#1115 - 未知字符集:“utf8mb4”phpMyAdmin导出数据库

我已经回到甲基苯丙胺和检查:操作>整理> utf8_unicode_ci 我在每个表在通用数据库中

要导出,请选择数据库>导出>自定义>保存输出到文件。在余下的事情我离开默认。

问题在哪里?那是什么mb4? utf8_unicode_ci是正确的吗?如何从MAMP导出并导入到我的服务器中?

+0

你能手动编辑转储文件并更改字符集吗? – user2182349

+0

user2182349:在Mamp中,当我导出时,我有选项Quick。他们给我的代码选项。我看到那里ENGINE = InnoDB AUTO_INCREMENT = 10 DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;你是这个意思吗? – Nrc

+0

在转储文件中搜索utf8mb4。 – user2182349

回答

2

让我们弄清楚一件事:字符集与排序规则不同。这两个概念只是被密切关注。

字符集告诉程序处理文本如何解释构成文本的字节流以及显示在屏幕上的字符。

排序规则告诉程序处理文本如何为了比较和排序目的而排序字符。因此,如果您通过RDBMS中的文本字段进行排序,那么RDBMS可以使用排序规则记录排序顺序。

utf8mb4是MySql使用的字符集。 MySql的utf8实现可以表示最多3个字节的字符,而utf8mb4可以表示最多4个字节的字符。 utf8标准使用最多4个字节的定义(utf8, wikipedia),所以严格来说,utf8mb4是mysql中真正的utf8实现。

但是,utf8mb4只是最近才添加的(v5.5.3),所以它的存在还没有在mysql社区中广为人知(MySql utf8mb4)。

如果您尝试使用此字符集将数据导入到不支持该数据库的数据库,则会在您的问题中收到错误消息。

排序规则应该与编码匹配,所以如果您有utf8mb4字符集,那么也使用utf8mb4排序规则。您需要将数据转换为目标系统支持的字符集,并且需要将排序规则与编码对齐。

+0

我不明白,你说“如果你有utf8mb4字符集”。我如何检查?我可以将utf8mb4更改为utf8吗?哪里?怎么样? – Nrc

+0

show character set命令将列出你的mysql服务器支持的字符集。更改是转换您的数据,有很多工具可以做到这一点。 – Shadow