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

MariaDB中varchar(20)字符上限及不同长度内容存储情况问询

MariaDB VARCHAR(20)字段问题解答

一、varchar(20)是否真的最多支持存储20个字符?

是的,MariaDB(以及MySQL 5.0及以上版本)中VARCHAR(N)的参数N单位是字符而非字节,因此varchar(20)确实最多可以存储20个任意字符,无论是单字节的英文字母、数字,还是多字节的中文、emoji都统一按字符数计数,20个中文汉字也可以正常存入。

二、存入不同长度的内容会出现什么情况?

具体表现和你MariaDB的SQL模式配置有关:

  • 存入10个字符的内容:完全符合字段限制,会正常写入,不会有任何报错或警告。VARCHAR是可变长类型,实际只会占用对应10个字符的存储容量+1~2字节的长度标识位,比定长的CHAR类型更节省存储空间。
  • 存入30/40个字符的内容:
    • 若开启严格模式(MariaDB 10.2及以上版本默认开启,即SQL模式包含STRICT_TRANS_TABLES/STRICT_ALL_TABLES参数):会直接抛出数据过长错误,写入操作直接失败。
    • 若关闭严格模式:会自动截断超出的部分,仅保留前20个字符成功写入,同时生成一个数据截断的警告,不会打断当前写入流程。

小建议:生产环境建议保持严格模式开启,同时在PHP业务代码层提前做字段长度校验,避免非预期的截断或写入报错。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:36:03