我知道这个问题已经讨论,解决或关闭了 但我想问的是,为什么数字是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。
我看到了这些文章
@ Here is more information
@ 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
对于InnoDB表,索引键前缀长度限制为767字节 使用REDUNDANT或COMPACT行格式。例如,你可能会命中 此限制,列前缀索引超过255个字符 TEXT或VARCHAR列,假设一个utf8mb3字符集和 每个字符最多3个字节。
但为什么长度为255的名字还可以呢? 并且192 * 3 = 576,小于767,为什么192不行?