Nextcloud23 内部服务器错误 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE

本故障同适用(当更换容器端口重启后产生的)内部服务器错误

都是进数据库执行这段代码:

SET GLOBAL innodb_read_only_compressed=OFF;

随后nextcloud恢复正常

本故障同适用于容器重启后的内部服务器错误

nextcloud version :23.0.2

注册错误提示:nextcloud install Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.


解决方法:

1.进入mariadb控制台,键入以下命令并回车;

mysql -u root -p


2.输入mariadb的root密码,回车登录;

3.输入以下命令并回车;

SET GLOBAL innodb_read_only_compressed=OFF;


4.这时候再次注册nextcloud,发现成功解决。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误是由于 MySQL 8.0 默认的行格式导致的。在 MySQL 8.0 中,行格式为 `DYNAMIC`,且每行的最大大小限制为 8126 字节当你尝试创建一个超过该限制的表时,就会出现 "Row size too large" 的错误。 为了解决这个问题,你可以尝试以下方法: 1. 使用 `ROW_FORMAT=DYNAMIC` 或 `ROW_FORMAT=COMPRESSED` 行格式来创建表。这些行格式允许更大的行大小。例如: ```sql CREATE TABLE your_table ( column1 INT, column2 VARCHAR(4000), column3 TEXT, ... ) ROW_FORMAT=DYNAMIC; ``` 或 ```sql CREATE TABLE your_table ( column1 INT, column2 VARCHAR(4000), column3 TEXT, ... ) ROW_FORMAT=COMPRESSED; ``` 2. 将需要存储大量数据的列更改为 `TEXT` 或 `BLOB` 类型。这将使这些列以外部存储的方式进行存储,而不是内联存储在行中。例如,将 `VARCHAR` 类型列改为 `TEXT` 类型: ```sql CREATE TABLE your_table ( column1 INT, column2 TEXT, column3 TEXT, ... ); ``` 请注意,将列更改为 `TEXT` 或 `BLOB` 类型可能会影响查询和索引的性能。 3. 如果以上方法仍然无法解决问题,你可以考虑调整 MySQL 的配置文件,增加 `innodb_log_file_size` 和 `innodb_strict_mode` 的值。请注意,在修改配置文件之前,确保备份了重要的数据和配置文件。 这些方法应该能够帮助你解决 "Row size too large" 错误。如果问题仍然存在,建议根据你的具体需求,合理设计表结构,并确保每行的大小不超过 MySQL 的限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良人眷

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值