You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何MariaDB行大小限制在Windows生效而同版本Linux实例不生效?

问题原因

导致跨平台行为差异的核心是两个MariaDB实例的innodb_strict_mode参数配置不一致:

  • Windows环境下的MariaDB默认开启innodb_strict_mode:此时建表时非BLOB/TEXT类型的字段总长度如果超过服务器层规定的65535字节上限,会直接抛出ERROR 1118 (42000): Row size too large报错。你定义的4个VARCHAR(32767)字段按单字节字符集计算总长度就已经超过130KB,远高于上限,所以直接报错符合预期。
  • Linux官方容器版的MariaDB默认关闭innodb_strict_mode:此时遇到行大小超过限制的场景,数据库不会直接抛出错误,而是自动将超长的VARCHAR字段转换为TEXT类型,规避长度限制,仅输出对应警告(你执行建表语句时返回的4个警告就对应4个VARCHAR字段的类型转换)。

验证方法

你可以自行操作确认差异:

  1. 在两个实例分别执行SHOW VARIABLES LIKE 'innodb_strict_mode';,即可看到参数开关的差异
  2. 在Linux实例执行SHOW CREATE TABLE t_postgres1.binary_types;查看最终表结构,就能看到四个原本定义为VARCHAR(32767)的字段,实际已经被自动转换为TEXT类型

内容的提问来源于stack exchange,提问作者mark d drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:45:07