您的位置 首页 php

小知识:数据库不支持utf8mb4编码导致数据库 1273错误解决办法

网站运维人员在维护多个站点,除了保证安全之外,最看重应该就是网站数据备份了。不论是远程还是本地通常都会定点备份数据文件,以备站点出现不可逆的问题时及时恢复,将损失控制在最小范围内。而数据库是整个网站的核心。

恢复原站点数据库时出现: MYSQL 返回:#1273-Unknown collation:’utf8mb4_unicode_ci’的错误提示。

如何解决?从字面意思上是没有定义的 编码 集utf8mb4也可以理解是数据库不支持utf8mb4。

度娘告诉我们utf8mb4是utf8的一个衍生形式, utf-8 里的一个字符只能最多支持3个字节,而utf8mb4则扩展到一个字符支持4个字节。而utf8mb4只有在 mysql数据库 版本是5.5.3+的时候才支持。在官方有关于utf8mb4编码的说明,只要在数据库支持的时候才会把部分数据表的编码升级为utf8mb4,如果不支持就不会转化为utf8mb4编码。这就意味着,原站点还是 向下兼容 utf8格式的数据库编码的。

所以我们在导入数据库之前,只需把把utf8mb4编码转成utf-8就可以了,有三种方法可以解决。

一、直接通过代码编辑器替换utf8mb4为utf8_general_ci

在导入数据库之前,用代码编辑器打开需要导入的数据库文件。

1.查找:utf8mb4_unicode_ci,替换为:utf8_general_ci

2.查找:utf8mb4替换为utf8

替换的时候一定要注意顺序,如果先替换utf8mb4,再替换utf8mb4_unicode_ci就会找不到utf8mb4_unicode_ci而造成替换失败。

二、通过SQL语句替换

熟悉SQL语句的朋友也可以直接通过SQL命令修改,通过命令修改的参考如下,有能力的朋友可以尝试使用。

sql命令如下:

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”);

}}

三、删除config.inc.php文件(小编没有实践过,慎用)

有时候在MYSQL没有安装utf8的字符集,将 phpMyAdmin 目录下的config.inc.php删除掉,也可以解决上述报错问题。

注: 有时是数据库版本的问题,把网站要用的mysql数据库升级到5.5.3以上版本。

文章来源:智云一二三科技

文章标题:小知识:数据库不支持utf8mb4编码导致数据库 1273错误解决办法

文章地址:https://www.zhihuclub.com/152631.shtml

关于作者: 智云科技

热门文章

网站地图