В командах миграции Laravel db; невозможно создать столбец, который ОБА уникален и имеет размер больше 191. Как решить?

Первый; в соответствии с этот

Я редактировал: app\Providers\AppServiceProvider.php

public function boot()
{
Schema::defaultStringLength(191);
}

второй; Я выпустил php artisan make:migration create_users

В третьих; Я реализовал сгенерированный класс:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users2',function($users){
$users->increments('id');
$users->string('email',320)->unique(); // this causes errors
$users->string('username',100)->unique();
$users->string('password',50);
$users->rememberToken();
$users->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users2');
}
}

четвертый; после выдачи php artisan migrate

Я получаю этот результат:

[Осветить \ База данных \ QueryException] SQLSTATE [42000]: синтаксическая ошибка
или нарушение прав доступа: 1071 Указан слишком длинный ключ; максимальная длина ключа
767 байт (SQL: изменить таблицу users2 добавить уникальный
users2_email_unique(email))

[PDOException] SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа:
1071 Указанный ключ был слишком длинным; максимальная длина ключа 767 байт

Проблема в этой строке:
$users->string('email',320)->unique();

Когда я проверил базу данных; Я нашел email столбец, созданный с указанной длиной 320, но НЕ уникальный UNI

Если длина установлена ​​на 191 или меньше, то email столбец создан правильно с указанной длиной и уникальностью.

Так как же разрешить создание колонн, которые уникальны и не ограничены потолком 191 года ?!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]