#1273 - 未知校对:'utf8mb4_unicode_ci'Cpanel

Wai*_*igi 163 mysql wordpress phpmyadmin cpanel

我在本地计算机上有一个wordpress数据库,我想将其转移到Cpanel上的托管phpMyAdmin.但是,当我尝试将数据库导入环境时,我不断收到此错误

#1273 - Unknown collation: 'utf8mb4_unicode_ci' 
Run Code Online (Sandbox Code Playgroud)

我试图谷歌周围和我能找到的唯一解决方案是这一个phpmysql错误 - #1273 - #1273 - 未知的整理:'utf8mb4_general_ci'现在已经没有多少帮助了.我已经尝试清除cookie但它仍然无法正常工作.请帮忙!

Evs*_*ter 228

这篇文章中的技术对我有用

1)单击数据库的"导出"选项卡

2)单击"自定义"单选按钮

3)转到标题为"特定于格式的选项"的部分,并更改"数据库系统或较旧的MySQL服务器的下拉列表以最大化输出兼容性:"从NONE到MYSQL40.

4)滚动到底部,然后单击"开始".

我不确定这样做是否会导致任何数据丢失,但是在我尝试过的一次中我没有注意到任何数据丢失.在上述论坛中回复的任何人都没有.

编辑8/12/16 - 我相信以这种方式导出数据库会导致我丢失保存在Black Studio TinyMCE Visual Editor小部件中的数据,尽管我没有运行多个测试来确认.


Ran*_*ais 137

最好的办法是导出数据库.sql,在Notepad ++上打开它,然后转到"搜索和替换".然后你把"utf8mb4"放在搜索上,"utf8"放在替换上.它会将utf8mb4_unicode_ci替换 为utf8_unicode_ci.现在转到PhpMyAdmin(目标)并将DB排序设置为utf8_unicode_ci(Operations> Collat​​ion).

  • 它与这一个完美配合http://stackoverflow.com/a/30694416/1022726 (2认同)
  • 并将“utf8_0900_ai_ci”替换为“utf8_unicode_ci” (2认同)

小智 103

我遇到了同样的问题,因为我们所有的服务器都运行旧版本的MySQL.这可以通过运行PHP脚本来解决.这段代码保存到一个文件并运行它进入数据库名称,用户名和密码,它会从更改排序规则utf8mb4/utf8mb4_unicode_ci,以utf8/utf8_general_ci

<!DOCTYPE html>
<html>
<head>
  <title>DB-Convert</title>
  <style>
    body { font-family:"Courier New", Courier, monospace; }
  </style>
</head>
<body>

<h1>Convert your Database to utf8_general_ci!</h1>

<form action="db-convert.php" method="post">
  dbname: <input type="text" name="dbname"><br>
  dbuser: <input type="text" name="dbuser"><br>
  dbpass: <input type="text" name="dbpassword"><br>
  <input type="submit">
</form>

</body>
</html>
<?php
if ($_POST) {
  $dbname = $_POST['dbname'];
  $dbuser = $_POST['dbuser'];
  $dbpassword = $_POST['dbpassword'];

  $con = mysql_connect('localhost',$dbuser,$dbpassword);
  if(!$con) { echo "Cannot connect to the database ";die();}
  mysql_select_db($dbname);
  $result=mysql_query('show tables');
  while($tables = mysql_fetch_array($result)) {
          foreach ($tables as $key => $value) {
           mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
     }}
  echo "<script>alert('The collation of your database has been successfully changed!');</script>";
}

?>
Run Code Online (Sandbox Code Playgroud)

  • 这似乎有点矫枉过正`vs mysqldump --compatible = mysql4` (46认同)
  • 对我来说它有效.记得将文件命名为"db-convert.php" (2认同)
  • mysqldump --compatible = mysql4或下面的答案是一个更好的选择。我认为在实时站点上更改此类内容不是一个明智的主意。最好以正确的格式导出,否则,请编辑导出的文件。 (2认同)

hal*_*ar8 39

我在linux中使用它:

sed -i 's/utf8mb4/utf8/g' your_file.sql
sed -i 's/utf8_unicode_ci/utf8_general_ci/g' your_file.sql
sed -i 's/utf8_unicode_520_ci/utf8_general_ci/g' your_file.sql
Run Code Online (Sandbox Code Playgroud)

然后恢复your_file.sql

mysql -uyourdbuser -pyourdbpasswd yourdb < your_file.sql
Run Code Online (Sandbox Code Playgroud)

  • 有对另一个答案的评论,值得在此重复。OS X 版本的 sed 在 -i 标志后需要一个额外的参数。所以`sed -i '' ....` 有效。 (2认同)
  • 我也必须运行这个: `sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql` (2认同)

Mar*_*son 28

出于安全原因,Wordpress 4.2引入了对"utf8mb4"字符编码的支持,但只有MySQL 5.5.3及更高版本支持它.安装程序(和更新程序)处理此问题的方式是它检查您的MySQL版本,并且只有在支持的情况下,您的数据库才会升级到utfmb4 .

这在理论上听起来很棒,但问题(正如您所发现的)是将数据库从支持utf8mb4的MySQL服务器迁移到不支持utf8mb4的MySQL服务器.虽然反过来应该工作,但它基本上是单向操作.

正如Evster所指出的,您可能会成功使用PHPMYAdmin的"导出"功能.使用" 导出方法:自定义 "和" 数据库系统或较旧的MySQL服务器以最大化输出兼容性: "下拉列表选择" MYSQL 40 ".

对于使用mysqldump的命令行导出.看看旗帜:

$ mysqldump --compatible=mysql4
Run Code Online (Sandbox Code Playgroud)

注意:如果数据库中有任何4字节字符,它们将被破坏.

最后,对于使用流行的WP Migrate DB PRO插件的任何人来说,这个Wordpress.org线程中的用户报告说迁移总是被正确处理但我无法找到任何正式的.

WP Migrate DB插件将数据库从一个排序规则转换为另一个排序规则,当它在5.5.3之前或之后的主机之间移动4.2个站点时

目前,似乎没有办法退出数据库更新.因此,如果您正在使用工作流将服务器或本地主机(使用MySQL> 5.5.3)迁移到使用较旧MySQL版本的工作流,那么您可能会运气不好.

  • 如果您尝试将mysql4兼容转储导入到v5.5.3之后的数据库(我使用的是5.5.28),那么它会失败,因为该脚本包含在v5.1中删除的`TYPE = MyISAM`.搜索并替换为"ENGINE = MyISAM".我使用`mysqldump`输出选项无法找到解决方法. (3认同)

She*_*man 26

在我的情况下,事实证明我的
新服务器正在运行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文件.


Isk*_*k1n 15

wp-config.php中有一行:

define('DB_CHARSET', 'utf8mb4');
Run Code Online (Sandbox Code Playgroud)

如果您按照Markouver/Evster的说明进行操作,请不要忘记将生产服务器上的此行更改为

define('DB_CHARSET', 'utf8');
Run Code Online (Sandbox Code Playgroud)

为了修复损坏的4字节字符


小智 10

经过长时间的研究,我找到了上述解决方案:

  1. 首先将wp-config.php> Database DB_CHARSET默认更改为"utf8"

  2. 单击数据库的"导出"选项卡

  3. 单击"自定义"单选按钮

  4. 转到标题为"特定于格式的选项"的部分,并更改"数据库系统或较旧的MySQL服务器的下拉列表以最大化输出兼容性:"从NONE到MYSQL40.

  5. 滚动到底部,然后单击go

然后你就开始了.


flo*_*mei 7

好像您的主机没有提供能够使用utf8mb4排序规则运行表的MySQL版本.

WordPress表更改为utf8mb4版本4.2(2015年4月23日发布)以支持Emojis,但您需要MySQL 5.5.3才能使用它.5.5.3.从2010年3月开始,通常应广泛使用.Cna你检查你的托管服务商是否提供该版本?

如果没有,并且无法升级,您可能需要注意另一个主机运行最新的WordPress版本(出于安全原因,您应该始终这样做).