Первый; в соответствии с этот
Я редактировал: 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
(
1071 Указанный ключ был слишком длинным; максимальная длина ключа 767 байт
Проблема в этой строке:
$users->string('email',320)->unique();
Когда я проверил базу данных; Я нашел email
столбец, созданный с указанной длиной 320, но НЕ уникальный UNI
Если длина установлена на 191 или меньше, то email
столбец создан правильно с указанной длиной и уникальностью.
Так как же разрешить создание колонн, которые уникальны и не ограничены потолком 191 года ?!
Задача ещё не решена.
Других решений пока нет …