php - MySQL - 错误 1118 行大小太大 (> 8126) - 无法访问 sql-config

标签 php mysql joomla

我知道这个问题被问了很多,我也找到了很多建议,但没有一个对我来说是可行的。我的网站托管在 siteground.com 上。到目前为止一切正常,突然我得到了

Error: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

“随机”。

实际上我的整个网站(joomla 3.7.4/PHP 7.0.22/sql-server: 5.6.36-82.1-log - Percona Server (GPL), Release 82.1, Revision 1a00d79)有很多自定义代码不是因此不再可用。

现在我明白这与总行大小有关,但作为数据库和 php 业余爱好者,我仍然不明白。

  • 一行中是否有太多列,或者一行中是否有太多数据 列?
  • “行大小太大 (> 8126)”是什么意思?目前有 每行 81 列,根据 phpMyAdmin 整个表 需要 32KiB 数据、16KiB 索引,总共 48 KiB。如果我 看看 Joomla 系统的其他表,这是一个相当小的表 数据量(由序列化数组、一些文本和 就是这样)
  • 为什么这个问题会“一夜之间”出现 - 我这边没有对 db-strukture 进行更新或任何更改。
  • 如何确定或查看实际行大小,以便我可以“尝试”满足数据库设置需求?

我可以解决这个问题吗?或者,如果托管服务商无法或不会更改设置中的某些内容,我是否会“陷入困境”?

到目前为止我做了什么:

由于我无法访问服务器设置,我开始限制所有“int”和“char”。没有效果后,我开始将所有类型更改为“medium-txt”和“tiny-txt”。在第 3 轮中,我将所有类型更改为“txt”,但结果也没有改变。我另外将所有 utf8_general_ci 转换为 utf8mb4_general_ci。基本上我做了所有我能找到的但没有成功。

正如您从上面的文字中读到的那样,我就像一个迷失在树林中的盲人,在没有任何专业知识的情况下绝望地尝试一切来解决这个问题。

其他信息(根据 phpMyAdmin):

  • innodb 日志文件大小 = 128MiB
  • innodb_strict_mode = OFF
  • Tabel-Typ = InnoDB

如有任何帮助,我们将不胜感激。无论是可能的解决方案还是对实际问题本身的理解。提前谢谢!

最佳答案

不知道还有没有人遇到这个问题, 希望这会有所帮助。

尝试使用脚本或 SQL 文件上传添加新表时。 如果您的表引擎是其他类型,请将其更改为 MYISAM

CREATE TABLE `your_table_name_here` (
  `id`  int(11)  NOT NULL,
 ..............
) ENGINE=MYISAM DEFAULT CHARSET=utf8;

当前表在添加新列时出现错误

USE your_db_name_goes_here;
ALTER TABLE your_table_name_here ENGINE=MYISAM;

关于php - MySQL - 错误 1118 行大小太大 (> 8126) - 无法访问 sql-config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45681365/

相关文章:

php - php计数器,警告: fopen(clickcount.txt): failed to open stream

php - 在 PHP/MySQL 中获取具有实际列名的列号

php - 搜索用户详细信息表

php - 迁移类别/部分到 joomla 2.5

php - 修改 mod_mainmenu 以获取菜单项上的悬停文本

php - json多维数组和jquery?

php - Mysql相似文搜索

mysql - 在 SQL 中设置差异

php - 从网站头部的数据库中获取数据

joomla - 在 joomla 中设置前端 session 超时限制