官方系列教材 - H计划

代码生成器

今天在将一个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

截图如下:

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

2,解决问题


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

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

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

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

 

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 经验分享

第2章 专题教程

第3章 扩展推荐

第13章 扩展更新日志