今天在将一个Joomla网站使用akeeba恢复,在恢复数据的时候出现了错误,Specified key was too long; max key length is 767 bytes 初步判断是数据库引起的问题。

1,发现问题


还原Joomla网站,发现如下的问题:

Specified key was too long; max key length is 767 bytes
 SQL=CREATE TABLE `shop2_akeeba_common` (   `key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,   `value` longtext COLLATE utf8mb4_unicode_ci NOT NULL,   PRIMARY KEY (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

截图如下:

joomla_restore_error.png

这是很常见的问题,大致意思是说数据库需要的字符串太长了。和现在需要还原的数据库服务器并不支持这个长的字符串。

2,解决问题


最简单的方案就是调整服务器上的mysql的版本,将服务器上的版本和你原来的网站一样就可以解决了。

其次,如果动手能力比较强的话,可以在install目录下面找到sql文件,将这个表的字段手动的调整小一些。具体说来就是将上面的255调整为64.(当然这种修改在某些情况下面会导致程序出现异常)

作为程序员来说,可以尝试修改mysql的设置,启用 innodb_large_prefix = on ,然后重启服务器。但本人亲自实验,发现问题依旧存在。

对于使用akeeba还原的用户,我们有更加方便的方案。只要在还原的设置界面,勾选强制使用UTF-8来创建表。如图:

joomla_restore_error2.png 

用户评分: 0 / 5

不活动星星不活动星星不活动星星不活动星星不活动星星
 

评论

  • 未找到评论