我在本地WAMP服务器上有一个WordPress网站。但当我上传它的数据库到活服务器,我得到错误

#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’

任何帮助都将不胜感激!


当前回答

Getting collation error #1273 - Unknown collation: 'utf8mb4_unicode_520_ci' is caused by the difference of the MySQL version from which you export and our MySQL server to which you import. Basically, the Wordpress library for newer version checks to see what version of SQL your site is running on. If it uses MySQL version 5.6 or more, it assumes the use of a new and improved Unicode Collation Algorithm (UCA) called “utf8mb4_unicode_520_ci”. This is great unless you end up moving your WordPress site from a newer 5.6 version of MySQL to an older, pre 5.6 version of MySQL.

要解决这个问题,你必须编辑你的SQL导出文件,并进行搜索和替换,将' utf8mb4_unicode_520_ci '的所有实例更改为' utf8mb4_unicode_ci '。如果你有PHPMyAdmin,也可以按照下面的步骤:

单击数据库的Export选项卡 单击Custom单选按钮。 进入“特定格式选项”部分,更改数据库系统或旧MySQL服务器的下拉菜单,以最大限度地提高输出兼容性:从NONE到MYSQL40。 滚动到底部并单击GO。

其他回答

Getting collation error #1273 - Unknown collation: 'utf8mb4_unicode_520_ci' is caused by the difference of the MySQL version from which you export and our MySQL server to which you import. Basically, the Wordpress library for newer version checks to see what version of SQL your site is running on. If it uses MySQL version 5.6 or more, it assumes the use of a new and improved Unicode Collation Algorithm (UCA) called “utf8mb4_unicode_520_ci”. This is great unless you end up moving your WordPress site from a newer 5.6 version of MySQL to an older, pre 5.6 version of MySQL.

要解决这个问题,你必须编辑你的SQL导出文件,并进行搜索和替换,将' utf8mb4_unicode_520_ci '的所有实例更改为' utf8mb4_unicode_ci '。如果你有PHPMyAdmin,也可以按照下面的步骤:

单击数据库的Export选项卡 单击Custom单选按钮。 进入“特定格式选项”部分,更改数据库系统或旧MySQL服务器的下拉菜单,以最大限度地提高输出兼容性:从NONE到MYSQL40。 滚动到底部并单击GO。

在我的例子中,我像这样用sed替换utf8_general_ci:

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

之后,我就可以导入了。

1273 -未知排序:'utf8mb4_0900_ai_ci'

在我的情况下,我无法导入DB使用

ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci;

and

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;

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

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

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

所以你要做的就是用mysql服务器替换你的maria db服务器。

查找和替换:

utf8mb4_unicode_520_ci

with

utf8_general_ci

在整个SQL文件中