【问题标题】:#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’#1273 – 未知排序规则:‘utf8mb4_unicode_520_ci’
【发布时间】:2017-07-12 03:00:13
【问题描述】:

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

#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’

任何帮助将不胜感激!

【问题讨论】:

  • sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql
  • 在下面的大量查找和替换解决方案中,不要忘记先查看@SherylHohman 的答案 - 只需升级到 mariadb / mysql 5.6,以便您的服务器支持此排序规则。
  • 这里还有一个快速指南 (wpza.net/unknown-collation-utf8mb4_unicode_520_ci),它解释了您应该采取的所有 3 个步骤,以确保您已完成所有操作。
  • sed -i dump-file.sql -e 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g'

标签: mysql sql wordpress collation


【解决方案1】:

我相信这个错误是由于本地服务器和实时服务器运行不同版本的 MySQL 造成的。解决这个问题:

  1. 在文本编辑器中打开 sql 文件
  2. 查找所有utf8mb4_unicode_520_ci 并将其替换为utf8mb4_unicode_ci
  3. 保存并上传到新的 mySql 数据库

希望对你有帮助

【讨论】:

  • HELL NO!!! 已广泛证明utf8mb4_unicode_520_ciutf8mb4_unicode_ci 具有更多 更好的UTF-8 支持!酱汁:mysql.rjweb.org/doc.php/charcoll#best_practice 视觉澄清证明 520_ci 在这里更胜一筹:mysql.rjweb.org/utf8_collations.html
  • @John,您链接的文章并没有真正捍卫该评论。他们的“如此”甚至不能从他们的前提恰当地表述出来。总的来说,整篇文章写得不好,尽管那里似乎确实有一些很好的信息。 520 排序规则使用较新版本的 Unicode 排序算法(UCA - 5.2.0 版),权重不同,但要说它“具有更好的 UTF-8 支持”似乎有点牵强。
  • 假设标准机构 (Unicode) 通常会使每个新版本 (5.20) 比旧版本 (4.0) “更好”。
  • 这是最好的答案。
  • 我建议使用此解决方案,因为它替换了所有出现的“utf8mb4_unicode_520_ci”。而 savani sandip 的回答却留下了一些。
【解决方案2】:

你可以通过查找来解决这个问题

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

在您的 .sql 文件中,并用

交换它
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

【讨论】:

  • 我推荐 Sabba (stackoverflow.com/a/44122258/168309) 的答案,因为它保留了 utf8mb4
  • 我认为@Sabba Keynejad 下面的解决方案更好,因为它保留了mb4,你应该先尝试一下。
  • 注意,我必须在 SQL 文件的多个位置替换它。还有一些地方我也必须在下面做stackoverflow.com/a/44122258/1436129
  • 实际上发现这个答案有效,而 Sabba 的链接答案却没有。大概是因为我的 MySql 安装默认。 +1
  • 它不工作,现在它给出错误:COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' ,我已将utf8mb4_unicode_520_ci 替换为utf8mb4_unicode_ci 并且它正在工作,根据 Sabba 的回答。
【解决方案3】:

就我而言,结果是我的
新服务器正在运行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_ciutf8mb4_unicode_520_ci 的实例
...与utf8mb4_unicode_ci
- 导入您更新的.sql 文件。

【讨论】:

  • 如果您可以完全控制您的服务器,这绝对是最好的方法。升级新服务器,使其与旧服务器匹配。如果您无权升级您的新服务器位置,find-replace 方法可能没问题,但在任何情况下您都可以只进行此升级,您应该这样做。
  • 5.6 是添加 520 的时间。
  • 这应该是正确的答案。大多数其他解决方案更像是黑客。谢谢@SherylHohman
【解决方案4】:

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

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

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

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

保存并上传!

【讨论】:

  • 我真的很高兴我找到了你的解决方案,我已经收到这个 #1273 错误好几天了,我只是找不到解决方案
  • 救命稻草。谢谢!
【解决方案5】:

轻松替换

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

【讨论】:

  • 在 macOS 上:sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
【解决方案6】:

只需删除“520_”
utf8mb4_unicode_520_ciutf8mb4_unicode_ci

【讨论】:

    【解决方案7】:

    我刚刚在 Notepad++ 中打开了 dump.sql 文件,然后按 CTRL+H 查找并替换字符串“utf8mb4_0900_ai_ci”并将其替换为“utf8mb4_general_ci”。来源链接https://www.freakyjolly.com/resolved-when-i-faced-1273-unknown-collation-utf8mb4_0900_ai_ci-error/

    【讨论】:

      【解决方案8】:

      查找和替换:

      utf8mb4_unicode_520_ci
      

      utf8_general_ci
      

      在整个 sql 文件中

      【讨论】:

      • generalutf8 都倒退了一步。
      【解决方案9】:

      出现排序规则错误 #1273 - Unknown collat​​ion: 'utf8mb4_unicode_520_ci' 是由您导出的 MySQL 版本和您导入的 MySQL 服务器的差异引起的。基本上,较新版本的 Wordpress 库会检查您的站点运行的 SQL 版本。如果它使用 MySQL 5.6 或更高版本,则假定使用一种新的改进的 Unicode 排序算法 (UCA),称为“utf8mb4_unicode_520_ci”。这很好,除非您最终将 WordPress 网站从较新的 5.6 版本的 MySQL 迁移到较旧的 5.6 之前的 MySQL 版本。

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

      1. 单击数据库的导出选项卡
      2. 单击自定义单选按钮。
      3. 转到标题为“格式特定选项”的部分并更改数据库系统或旧版 MySQL 服务器的下拉菜单,以最大限度地提高输出兼容性:从 NONE 到 MYSQL40。
      4. 滚动到底部并点击 GO。

      【讨论】:

        【解决方案10】:

        在我的例子中,我将它替换为 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 
        

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

        【讨论】:

          【解决方案11】:

          我在将数据导入使用 mysql 工作台导出的 mysql 时遇到了挑战。这是一个整理问题。 我通过以下方式解决了这个错误:

          1. 使用文本编辑器打开 .sql 文件
          2. 将“utf8mb4_0900_ai_ci”替换为“utf8mb4_general_ci”。
          3. 将文件另存为 .sql 并导入

          成功了

          【讨论】:

          • 完美解决方案
          【解决方案12】:

          我是这样解决的,我在记事本中打开 .sql 文件并单击 CTRL + H 查找并替换字符串“utf8mb4_0900_ai_ci”并将其替换为“utf8mb4_general_ci强>”。

          【讨论】:

            【解决方案13】:

            这个错误是由于不同版本的MySQL冲突造成的。要解决这个问题:

            • 在任何文本编辑器中打开 sql 文件

            • 查找所有 utf8mb4_0900_ai_ci 并将其替换为 utf8mb4_unicode_ci

            • 保存并尝试新的 mySql db 文件

            然后再试一次,对我来说效果很好

            【讨论】:

              【解决方案14】:

              派对迟到了,但如果安装 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 中删除了与 ENGINE 同义的旧 TYPE 选项。

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

              TYPE=ENGINE=

              现在导入应该很顺利了。

              【讨论】:

                【解决方案15】:

                1273 - 未知排序规则:'utf8mb4_0900_ai_ci'

                在我的情况下,我无法使用

                导入数据库
                ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci;
                

                ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
                

                两者。但是在 .SQL 文件中将其更改为这个解决了问题

                ENGINE=InnoDB DEFAULT CHARSET=latin1;
                

                更新

                使用'utf8mb4_general_ci'解决了问题

                ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
                

                【讨论】:

                  【解决方案16】:

                  我只是删除了COLLATE 和其他属性,只保留到ENGINE。 像下面这样

                  来自:

                  ENGINE=InnoDB AUTO_INCREMENT=429 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
                  

                  到:

                  ENGINE=InnoDB;
                  

                  它对我很有效。

                  【讨论】:

                    【解决方案17】:

                    很奇怪,所有答案都建议替换排序规则。这是一种非常糟糕的做法,因为您想使用与开发中的版本和生产中的版本相同的 MySQL 版本。所以你本地的mysql服务器应该是一样的。

                    首先,执行查询 SHOW COLLATION 以检查您的服务器支持的所有排序规则。如果您使用 xampp 或任何其他类似工具来启动您的服务器,它可能会附带 maria db 服务器而不是 mysql 服务器。

                    你应该做的是用真正的mysql替换你当前的mysql(实际上是mariadb)。

                    所以你应该做的只是用 mysql 服务器替换你的 maria db 服务器。

                    【讨论】:

                      猜你喜欢
                      • 2015-07-07
                      • 2014-02-07
                      • 2018-01-29
                      • 1970-01-01
                      • 2023-03-22
                      相关资源
                      最近更新 更多