当前位置: 首页 > 知识库问答 >
问题:

数据库无法保存大型内容

段干宜
2023-03-14

我有一张表,贴上:

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

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

我如何修复此问题?

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

共有3个答案

陶刚豪
2023-03-14

而不是类型-

刘胜泫
2023-03-14

存储在数据库中的字段类型,为您提供类似于“微型”车间、实验室、“中型”工厂的空间,类似于大型工厂的“长”空间。

但要明智地选择,因为“空间”有时占用的资源远远超过所需资源。根据需要使用字段类型。

      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
倪鸿禧
2023-03-14

如果您阅读TEXT类型或任何其他数据类型的MySQL文档,您可以找到每种类型的限制。

例如,TEXT的具体限制约为65K,但此限制可以根据字符编码(例如UTF-8或其他多字节编码)降低,因为它是以字节计算的,而不是以字符计算的。

最大长度为65535(216)的文本列− 1) 字符。如果该值包含多字节字符,则有效最大长度较小。每个文本值都使用2字节长度前缀存储,该前缀指示值中的字节数。

可为该类型提供可选长度M。如果这样做了,MySQL将创建一个足够大的最小文本类型的列,以容纳M个字符长的值。

因此,如果您的需求超过这些限制,您应该选择一种能够处理更大有效负载的类型,如MEDIUMBLOB和LONGBLOB,它们可以分别处理16M和4G。

 类似资料:
  • 我正在inMemory数据库中插入数据,当插入数据时,我得到了一个问题, 使用boot、JPA、H2db在内存中插入数据的示例程序 > 创建Pojo并使用JPA注释进行注释 > 配置在app.prop:中 在data.sql文件中添加了给定表 为data.sql中提到的转换添加了名称。 在哪里配置;在Springboot中? 波乔 控制器 错误原因:对名为'in memorydatabaseShu

  • 07-24 12:36:23.742: W/System.err(10386):java.io.IO异常:拒绝许可07-24 12:36:23.750: W/System.err(10386): atjava.io.File.createNewFileImpl(本地方法)07-24 12:36:23.750: W/System.err(10386): atjava.io.File.createNe

  • 一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如: rc = sqlite3_open(":memory:", &db); 在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。

  • 这是使用电子邮件密码注册帐户的所有代码,保存验证电子邮件,将用户数据保存到Firestore数据库中。只有Firestore数据库无法运行。 else { Toast.makeText(register.this, “Error ! ” task.getException().getMessage(), Toast.LENGTH_SHORT).show();progressBar.setVisib