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 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3