#1273 –未知归类:“ utf8mb4_unicode_520_ci”


157

我的本地WAMP服务器上有一个WordPress网站。但是当我将其数据库上传到实时服务器时,出现错误

#1273  Unknown collation: utf8mb4_unicode_520_ci

任何帮助,将不胜感激!


37
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql
Nabil Kadimi

4
在下面的查找替换解决方案中,不要忘了先签出@SherylHohman的答案-只需升级到mariadb / mysql 5.6,以便您的服务器支持此排序规则。
squarecandy18年


这里也有一个快速指南(wpza.net/unknown-collat​​ion-utf8mb4_unicode_520_ci),其中解释了应确保完成所有步骤的所有3个步骤。
WPZA

在此处检查此解决方案的#1273-未知归类:'utf8mb4_0900_ai_ci'freakyjolly.com /…
代码间谍

Answers:


217

您可以通过找到解决

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

在您的.sql文件中,并与

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

28
我建议使用Sabba的答案(stackoverflow.com/a/44122258/168309),因为它保留了utf8mb4
阿米尔(Amir)

5
在我看来,@ Sabba Keynejad下面的解决方案更好,因为它保留了mb4,因此您应该先尝试一下。
Maor Barazany

注意,我必须在SQL文件的多个位置替换它。还有一些我也必须在下面做stackoverflow.com/a/44122258/1436129的地方。
aubreypwd

实际上,当Sabba的链接答案无效时,发现此答案有效。大概是因为MySql安装默认。+1
编码已删除'18

根据Sabba的回答,它不起作用,现在却出现错误:COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' ,我已替换utf8mb4_unicode_520_ciutf8mb4_unicode_ci并且它正在起作用。
Haritsinh Gohil

286

我认为此错误是由于本地服务器和实时服务器运行不同版本的MySQL引起的。要解决这个问题:

  1. 在文本编辑器中打开sql文件
  2. 查找并全部替换utf8mb4_unicode_520_ciutf8mb4_unicode_ci
  3. 保存并上传到新的mySql数据库

希望能有所帮助在此处输入图片说明


4
一定不行!!!据广泛记载,utf8mb4_unicode_520_ci UTF-8 具有更好的支持utf8mb4_unicode_ci。调味:mysql.rjweb.org/doc.php/charcoll#best_practice带有视觉清晰性证明520_ci在此处更胜一筹:mysql.rjweb.org/utf8_collat​​ions.html
John

5
@John,您链接的文章并不能真正捍卫该评论。他们的“因此”甚至无法从其前提中正确地陈述出来。总体而言,整篇文章写得不好,尽管那里确实有一些不错的信息。520归类使用权重不同的Unicode归类算法(UCA-5.2.0版)的较新版本,但要说“具有更好的UTF-8支持”似乎不胜枚举。
Gremio

让我们假设,标准正文(Unicode)通常会使每个较新版本(5.20)都比较旧版本(4.0)更好。
瑞克·詹姆斯

这是最好的答案。
Niby

我建议使用此解决方案,因为它替代了所有“ utf8mb4_unicode_520_ci”的出现。而savani sandip答案留下了一些。
拉克什

49

就我而言,事实证明我的
新服务器正在运行MySQL 5.5
旧服务器正在运行MySQL 5.6
因此,当尝试导入.sql从旧服务器导出的文件时出现此错误。

MySQL 5.5不支持utf8mb4_unicode_520_ci,但
MySQL 5.6 支持。

更新到MySQL 5.6新服务器上解决了整理错误!

如果要保留MySQL 5.5,则可以:
-制作导出.sql文件的副本
-替换utf8mb4unicode520_ci和的实例utf8mb4_unicode_520_ci
-用utf8mb4_unicode_ci
-导入更新的.sql文件。


2
如果您完全控制服务器,那绝对是最好的方法。升级新服务器,使其与旧服务器匹配。如果您无权升级新服务器位置,则可以使用find-replace方法,但是在任何情况下,只要可以升级即可,应该这样做。
candy

1
5.6是添加520的时间。
瑞克·詹姆斯

这应该是正确的答案。其他大多数解决方案更像黑客。感谢@SherylHohman
sawyerrken

30

在文本编辑器中打开sql文件;

1.搜索: utf8mb4_unicode_ci 替换: utf8_general_ci (全部替换)

2.搜索: utf8mb4_unicode_520_ci 替换: utf8_general_ci (全部替换)

3.搜索: utf8mb4 替换: utf8 (全部替换)

保存并上传!


我真的很高兴我找到了您的解决方案,好几天来我一直遇到这个#1273错误,而我却找不到解决方案
flying-dev

救生员。谢谢!
robbclarke


14

容易更换

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql

2
在macOS上:sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Osvaldas,


6

查找和替换:

utf8mb4_unicode_520_ci

utf8_general_ci

在整个SQL文件中


3
general而且utf8都落后了。
瑞克·詹姆斯

3

晚到聚会,但是如果WORDPRESS安装时发生这种情况:

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci

在phpmyadmin中的export method> Format-specific options(自定义导出)下

调成 : MYSQL40

如果您现在尝试导入,则现在可能会收到另一条错误消息:

1064 - You have an error in your SQL syntax; .....

这是因为在MySQL 5.5中已删除了TYPE同义的旧选项ENGINE

打开.sql文件,搜索并替换所有实例

TYPE=ENGINE=

现在,导入应该可以顺利进行。


3

获取排序规则错误#1273-未知的排序规则:“ utf8mb4_unicode_520_ci”是由您导出的MySQL版本和导入的MySQL服务器的差异引起的。基本上,较新版本的Wordpress库会检查您的网站正在运行的SQL版本。如果使用MySQL 5.6或更高版本,则假定使用名为“ utf8mb4_unicode_520_ci”的新的和改进的Unicode排序算法(UCA)。除非您最终将WordPress网站从MySQL的较新版本5.6迁移到MySQL的较早版本5.6之前,否则这是很好的选择。

要解决此问题,您将不得不编辑您的SQL导出文件并进行搜索和替换,将“ utf8mb4_unicode_520_ci”的所有实例更改为“ utf8mb4_unicode_ci”。或者,如果您具有PHPMyAdmin,请按照以下步骤操作:

  1. 单击数据库的导出选项卡
  2. 单击自定义单选按钮。
  3. 转到标题为“特定于格式的选项”的部分,然后更改数据库系统或较旧的MySQL服务器的下拉菜单,以最大程度地利用以下内容实现输出兼容性:从NONE到MYSQL40。
  4. 滚动到底部,然后单击执行。

1

就我而言,我utf8_general_ci用sed 代替它,如下所示:

sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' MY_DB.sql 
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' MY_DB.sql 

之后,我可以毫无问题地导入它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.