在存储或检索BLOB或TEXT列的值时,不会发生大小写转换。未运行在严格模式下,若为BLOB或TEXT列分配超过其类型最大长度的值,值将被截取以确保适合,若截掉的字符不是空格,则会产生警告。运行在严格模式下,会产生错误并拒绝该值,而非仅警告。BLOB列可视为VARBINARY列,而TEXT列则类似VARCHAR列。BLOB...
mysql怎么储存长字符
MySQL中使用BLOB和TEXT来存储长字符数据,其中BLOB分为TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB四种类型,分别可以存储不同长度的数据,而TEXT类型则包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。BLOB被视为二进制字符串,而TEXT则被视为非二进制字符串。BLOB列没有字符集,排序和比较基于列值字节的数值值,而TEXT列则有字符集,根据字符集的校对规则对值进行排序和比较。
在存储或检索BLOB或TEXT列的值时,不会发生大小写转换。未运行在严格模式下,若为BLOB或TEXT列分配超过其类型最大长度的值,值将被截取以确保适合,若截掉的字符不是空格,则会产生警告。运行在严格模式下,会产生错误并拒绝该值,而非仅警告。BLOB列可视为VARBINARY列,而TEXT列则类似VARCHAR列。
BLOB和TEXT与VARBINARY和VARCHAR在某些方面不同,如BLOB和TEXT列不能设置默认值,保存或检索BLOB和TEXT列的值时不删除尾部空格,而VARBINARY和VARCHAR则可以。对于BLOB和TEXT列的索引,必须指定索引前缀的长度,但CHAR和VARCHAR的前缀长度是可选的。
LONG和LONG VARCHAR对应MEDIUMTEXT数据类型,确保兼容性。若TEXT列使用BINARY属性,则将分配列字符集的二元校对规则。MySQL连接程序/ODBC将BLOB值定义为LONGVARBINARY,TEXT值定义为LONGVARCHAR。由于BLOB和TEXT值可能非常长,使用它们时可能会遇到一些约束。
BLOB或TEXT对象的最大大小由其类型决定,但在客户端和服务器之间实际可以传递的最大值则受限于可用内存数量和通信缓存区大小。你可以通过更改max_allowed_packet变量的值来调整消息缓存区的大小,但需要同时修改服务器和客户端程序,例如使用MySQL和MySQLdump来更改客户端的max_allowed_packet值。2024-12-13