我有一个MySQL转储,我试图恢复:
mysql -u"username" -p"password" --host="127.0.0.1" mysql_db < mysql_db
但是,这引发了一个错误:
ERROR 1115 (42000) at line 3231: Unknown character set: 'utf8mb4'
第3231-3233行:
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
我使用MySQL 5。1.69.如何解决此错误?
9条答案
按热度按时间guicsvcw1#
您的版本不支持该字符集,我相信它是
5.5.3
引入的。你应该升级你的mysql到你用来导出这个文件的版本。错误就很明显了:你在代码中设置了一个特定的字符集,但是你的mysql版本不支持它,因此你不知道它。
根据https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html:
utf8mb4是utf8的超集
所以也许有一个机会,你可以让它utf8,闭上你的眼睛和希望,但这将取决于你的数据,我不建议它。
fd3cxomn2#
您可以尝试:
通过文本编辑器打开sql文件查找并全部替换
再次导入。
ix0qys7i3#
这可以帮助:
PHPMyAdmin在'expert'导出选项中具有相同的MySQL兼容性模式。尽管有时候这并没有起到什么作用。
如果您没有通过命令行或PHPMyAdmin访问权限,则编辑
位只读取
'utf8'
,是要走的路。krcsximq4#
我在回答这个问题-因为我没有发现任何一个完整的。目前**未知字符集:'utf8 mb 4'**非常普遍,因为许多部署的MySQL少于5。5.3(添加utf8 mb 4的版本)。
该错误明确指出您的stage db服务器上不支持
utf8mb4
。原因:您本地可能有
MySQL
版本5。5.3或更高版本,并且在舞台/托管VPS上,您的MySQL服务器版本小于5。5.3utf8mb4
字符集在MySQL 5中添加。5.3.添加
utf8mb4
是因为MySQL的utf8
字符集有一个错误。MySQL对utf8字符集的处理只允许单个代码点最多3个字节,这不足以代表整个Unicode(Maximum codepoint =0x10FFFF
)。因为他们不想破坏任何依赖于这种错误行为的东西,所以添加了utf8mb4
。Documentation here。来自SO回答:
验证:为了验证,您可以检查您正在导入转储的数据库的当前字符集和排序规则-我如何查看MySQL数据库/表/列是什么字符集?
方案一:只需将MySQL服务器升级到5。5.3(至少)-下次请注意您在本地使用的版本,用于舞台和prod,所有版本必须相同。一个建议-在目前的默认字符集应该是utf8 mb 4。
方案2(不推荐):将当前字符集转换为utf8,然后导出数据-它将加载OK。
tct7dpnv5#
只要用文本编辑器打开你的sql文件,搜索'utf8mb4',然后替换为utf8。我希望这对你有用
yhuiod9q6#
也许整个数据库+表+字段应该有相同的字符集??!
即
bcs8qyzn7#
正如一些人在这里建议的,用
utf8
替换utf8mb4
将帮助您解决这个问题。IMHO,我使用sed
来查找和替换它们,以避免丢失数据。此外,在任何图形编辑器中打开一个大文件都是一个潜在的痛苦。我的MySQL数据增长了2GB。最终命令是成交!
aoyhnmkz8#
如果您不能升级服务器,我可以通过将客户端的ODBC连接器降级到5来消 debugging 误。3.8
jutyujz09#
发现
/*!40101 SET NAMES utf8mb4 /;
变化
/!40101设置名称utf8 */;
保存并上传您的mysql。