mysql - 为什么我在 laravel 迁移中得到指定的密钥太长?
问题描述
在 laravel 8 / mysql 5.7 中使用索引定义表:
Schema::create('community', function (Blueprint $table) {
$table->id();
$table->string('question_title', 1000);
$table->string('question_slug', 1005)->unique();
$table->boolean('status')->default(false);
$table->unsignedTinyInteger('question_point')->default(0);
...
$table->index(['status', 'question_title'], 'community_status_question_title_index');
});
我得到错误:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 3072 bytes (SQL: alter table `community` add index `community_status_question_title_index`(`status`, `question_title`))
我想知道为什么 3072 的限制被打破了,因为 question_title 有 1000 个字符的长度并且状态是 bool 以及如何修复它?
修改:我从poinetd分支获得决定,但在文件中添加:/app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
我试图修改值:
Schema::defaultStringLength(2000);
但无论如何都得到了同样的错误......
谢谢!
解决方案
推荐阅读
- .net - 如何通过 PhantomJS Driver 从网站的 HTML 中提取数据
- reactjs - 如何设置 React 自定义端口,如 3129
- android - Android 通话录音应用程序 - 在通话录音机 AudioSource.VOICE_COMMUNICATION 中不记录双方的通话
- php - WordPress 分页仅在第一页上带有功能帖子
- ios - iOS - UINavigatioItem 中的 BarButtonItem 角间距
- javascript - 单击时如何阻止javascript移动子菜单?
- python - 如何使用 Scrapy Request 并在同一个地方获得响应?
- c++ - 使用 C++ 中的函数在第三个中连接两个 char 数组所需的调试帮助
- css - 使用 CSS 显示与父元素相关的工具提示
- neo4j - 如何使用密码返回 unMutualContacts?