You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Migration中text与longText字段有什么区别?

Laravel 数据库迁移中text()与longText()的差异

Laravel 迁移的Schema构造器中,text()和longText()都用于定义长文本类型字段,二者的核心区别在MySQL/MariaDB环境下最为明确,其他数据库驱动下差异很小,具体如下:

  • 存储能力与原生类型映射不同
    不同数据库的适配规则:
    • MySQL/MariaDB 场景:
      • text() 对应原生TEXT类型,单字段最大存储容量为64KB(65535字节,按utf8mb4字符集计算最多可存约1.6万汉字),字段额外用2个字节存储内容长度信息
      • longText() 对应原生LONGTEXT类型,单字段最大存储容量为4GB(4294967295字节),字段额外用4个字节存储内容长度信息
    • PostgreSQL、SQLite、SQL Server 场景:两个方法最终映射的原生字段类型完全一致,没有存储容量的区别,均支持存储超大长度文本。
  • 适用场景不同
    • text() 适合存储长度可控的中等长度文本,比如文章摘要、用户短评、商品简介、普通多行表单输入内容,这类场景内容几乎不会突破64KB上限,存储开销更低,查询效率更高
    • longText() 适合存储有大体积需求的文本内容,比如长篇富文本文章、系统完整日志、大段JSON报文、长代码块、base64编码的文件内容等,避免内容超出长度被截断。
  • 使用注意点
    MySQL严格模式下,两种字段都不支持配置默认值;如果需要给这两类字段加索引,必须指定前缀长度,longText()因为内容长度跨度大,评估前缀索引区分度时需要更多测试。

参考迁移代码示例:

Schema::create('samples', function (Blueprint $table) {
    $table->id();
    $table->text('title1');
    $table->longText('title2');
    $table->timestamps();
});

内容的提问来源于stack exchange,提问作者K. M. Shawkat Zamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:48:18