laravel 5中的最大VARCHAR

Posted

技术标签:

【中文标题】laravel 5中的最大VARCHAR【英文标题】:VARCHAR max in laravel 5 【发布时间】:2016-03-25 13:20:46 【问题描述】:

我在网上搜索了有关 varchar max 的教程。我什至尝试过

$table->string('name', "MAX");

这给了我一个错误。

如何为 laravel 项目的博客文章设置 varchar max。谢谢

【问题讨论】:

什么是“varchar max”?你的意思是字段的最大长度? mysql 中没有 varchar(max):***.com/q/332798/1331425,我相信 Laravel 不支持它。 我听说文本已贬值,不是吗?我听到有人说我们应该使用 varchar max 来写一篇博文……这不对吗? 【参考方案1】:

There is no "max" constant 用于 MySQL 中的 VARCHAR。相反,您需要自己定义该字段的最大值。

为了定义文本字段的最大长度,只需提供最大长度限制作为第二个参数:

$table->string('name', 64);

这将导致在您的 MySQL 数据库中创建一个 VARCHAR 列。请记住,如果最大长度非常高,则可能会创建不同类型的字段(mediumtext、longtext)。

【讨论】:

我明白这一点。但在网上显示,一篇博文应该是 varchar(max)。由于 TEXT 字段已折旧。我正在寻找解决方法。 max 只是最大长度值的占位符...如果按照我在答案中发布的操作,您将获得 varchar(64) 类型的列-运行迁移后检查数据库【参考方案2】:

所以在 Laravel 中你必须使用字节数而不是自动最大值。 MySQL 最新版本中的最大长度为 65,535 字节,但整行需要小于该长度。因此,如果这是该行中唯一的长文本字段,则只需从最大值中减去一点并使用它就可以了。如果您要在一行中有几个长文本字段,您需要减去其他字段的长度,然后除以。

假设这是您博客字段中唯一的大文本字段,您可能会很好:

$table->string('name', 60000);

【讨论】:

【参考方案3】:

为 varchar(max) 使用文本:

$table->text('name');

【讨论】:

对于 MS SQL Server,这是正确的答案 - 它映射到 nvarchar(max)。 这会在 PostgreSQL 中创建 'text' 类型的列。【参考方案4】:

在 app/Auth/Providers 中设置文件 AppServiceProvider.php 如下:

use Illuminate\Support\ServiceProvider;

在开机功能中:

Schema::defaultStringLength(191);

【讨论】:

【参考方案5】:

因为这是 mysql 或 mariadb 或 ... 中的 varchar 类型。 VARCHAR 支持的最大大小为 65535 个字符。

$table->string('name', "65535");

【讨论】:

以上是关于laravel 5中的最大VARCHAR的主要内容,如果未能解决你的问题,请参考以下文章

laravel 5.4 运行 make:auth 报错

Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3

laravel查询php如何获取范围内的最大值

在Laravel中获取具有不同外国ID的列中的最大值

laravel-admin 怎样查库中的数据只查出一条where()排序最大的一条

在 laravel 中使用最大文件大小的验证错误