我有一张表post
:
field | type --------------------------------- id | int A_I P_K title | varchar(300) content | text
当我插入一行content
超过15k的单词时,我的数据库只保存了10k字,我丢失了5k字。
我该如何解决这个问题?
我正在使用 MySQL 和PHP框架 Laravel 5.1
答案 0 :(得分:3)
如果您阅读MySQL docs on TEXT type - 或任何其他数据类型 - 您可以找到每种类型的限制。
例如,TEXT
具有约65K的限制,但是这个限制可以根据字符编码(例如UTF-8或其他多字节编码)而减少,因为它是以字节计算的,而不是按字符计算的
TEXT列,最大长度为65,535(216 - 1)个字符。如果值包含多字节字符,则有效最大长度较小。每个TEXT值使用2字节长度前缀存储,该前缀表示值中的字节数。
此类型可以选择长度M.如果这样做,MySQL会将列创建为最小的TEXT类型,其大小足以保存M个字符长的值。
因此,如果您的要求超出这些限制,您应该选择能够处理更大有效负载的类型,例如MEDIUMBLOB
和LONGBLOB
,它可以处理高达16M和4G的任务。
答案 1 :(得分:2)
存储在数据库中的字段类型,在" tiny"中提供类似空格的内容。车间,实验室," medium"工厂,"长"就像一个大工厂。
但明智地选择,因为那"空间"有时会比需要更多的资源。为其目的使用字段类型。
Type | Maximum length
-----------+-------------------------------------
TINYTEXT | 255 (2^8 −1) bytes
TEXT | 65,535 (2^16−1) bytes = 64 KiB
MEDIUMTEXT | 16,777,215 (2^24−1) bytes = 16 MiB
LONGTEXT | 4,294,967,295 (2^32−1) bytes = 4 GiB
答案 2 :(得分:1)
而不是类型 - > TEXT
(65535个字符)
使用类型 - > MEDIUMTEXT
(女巫可以包含1600万个字符)