我知道这个问题已经讨论,解决或关闭了。 但我想问的是,为什么数字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不行?