laravel 5.4指定键太长,为什么数字191

问题描述 投票:8回答:1

我知道这个问题已经讨论,解决或关闭了。 但我想问的是,为什么数字191?

Schema::defaultStringLength(191);

我试过:如果192,错了。 191,好的。在此之后,我还编辑了database \ migrations \ xxx_user_table.php 改变这个

$table->string('name');

成为

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

然后运行php artisan migrate,没关系。使用一些mysql工具查看用户表的模式,varchar的名称长度实际为255,其他列为191。

我看过这些文章 @ https://laravel-news.com/laravel-5-4-key-too-long-error @ Laravel migration: unique key is too long, even if specified @ https://github.com/laravel/framework/issues/17508 @ https://laravel.com/docs/master/migrations#creating-indexes

这个:@ https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

对于使用REDUNDANT或COMPACT行格式的InnoDB表,索引键前缀长度限制为767字节。例如,您可能会在TEXT或VARCHAR列上使用超过255个字符的列前缀索引达到此限制,假设为utf8mb3字符集,并且每个字符最多包含3个字节。

但为什么长度255的名字还可以? 并且192 * 3 = 576,小于767,为什么192不行?

laravel
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.