数据库无法保存大量内容

时间:2016-08-30 03:52:35

标签: php mysql database laravel

我有一张表post

   field    |    type
---------------------------------
   id       |   int A_I P_K
   title    |   varchar(300)
   content  |   text

当我插入一行content超过15k的单词时,我的数据库只保存了10k字,我丢失了5k字。

我该如何解决这个问题?

我正在使用 MySQL 和PHP框架 Laravel 5.1

3 个答案:

答案 0 :(得分:3)

如果您阅读MySQL docs on TEXT type - 或任何其他数据类型 - 您可以找到每种类型的限制。

例如,TEXT具有约65K的限制,但是这个限制可以根据字符编码(例如UTF-8或其他多字节编码)而减少,因为它是以字节计算的,而不是按字符计算的

  

TEXT列,最大长度为65,535(216 - 1)个字符。如果值包含多字节字符,则有效最大长度较小。每个TEXT值使用2字节长度前缀存储,该前缀表示值中的字节数。

     

此类型可以选择长度M.如果这样做,MySQL会将列创建为最小的TEXT类型,其大小足以保存M个字符长的值。

因此,如果您的要求超出这些限制,您应该选择能够处理更大有效负载的类型,例如MEDIUMBLOBLONGBLOB,它可以处理高达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万个字符)