gpt4 book ai didi

php - MySQL varchar (255) 限制和异常

转载 作者:行者123 更新时间:2023-11-29 05:33:32 25 4
gpt4 key购买 nike

我在我的 mysql 数据库中定义了一列:

ALTER TABLE `my_table` CHANGE `desc` `desc` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

但是当我从前端输入文本插入到表中时,列数据的大小达到 233 后它截断进一步添加的文本即不保存超过 233 个字符的文本!!

我尝试将列的大小更改为 VARCHAR(511),但没有成功。

我使用 php strlen() 计算了字符数,它显示了 233 个字符

为什么 MySQL 这样做,我如何保存文本?

最佳答案

VARCHAR(250) NOT NULL 用一个字节存储长度 n,用 n 个字节存储实际字符串。因此,包含值“abc”的列将占 4 个字节。在 VARCHAR(250) NULL 中,nullity 占用一位,而 NULL 值不会占用任何其他内容。非空值采用该位,长度为一个字节,数据为 n 个字节。这里需要一点意味着几个可为空的列共享一个或多个字节来记录它们的空值。

其他变长数据类型类似。各种大小的 BLOB 和 TEXT 类型的长度可能不止一个字节,但其他方面的工作方式几乎相同。数字类型以及固定长度的 CHAR 类型具有固定的内存要求。我想我 CHAR 将省略长度字节,因为它的内容用空格填充到该固定长度。

索引可能会增加内存需求。多字节字符集(包括 UTF-8)可能会增加内存需求,因此只有当您的表是为 latin1 或类似的创建时,以上语句才适用。所以你可以推断出 VARCHAR(250) 并不意味着 255 个字符,它取决于你如何编码你的字符串

关于php - MySQL varchar (255) 限制和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com