По умолчанию create_users_table выбрасывает ошибку максимальной длины ключа - PullRequest
0 голосов
/ 11 декабря 2018

Я запустил свой проект Laravel, выполнив эти строки кода в окне командной строки.

cd C:\xampp\htdocs
composer global require laravel/installer
laravel new iezon

Затем я выполнил команду для построения схем аутентификации, пока ничего не редактировал.

artisan make:auth

Затем я направился в свою папку конфигурации, и внутри database.php я изменил mysql на правильную информацию аналогично файлу .env, который перезаписывает его.

Теперь я создаю таблицу миграции для проверки моего соединения с базой данных, используя:

php artisan migrate:install

И устанавливаю свои таблицы (пользовательские таблицы по умолчанию):

php artisan migrate:fresh

, которая затем выдает мнеошибка в этой отладке:

Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table

   Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

  at C:\xampp\htdocs\iezon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes")
      C:\xampp\htdocs\iezon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  2   PDOStatement::execute()
      C:\xampp\htdocs\iezon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

Есть идеи, какую команду я пропускаю или делаю неправильно?Я не изменял никакого содержимого файла, кроме файла database.php и .env с правильной информацией mysql.Как я могу это исправить?

1 Ответ

0 голосов
/ 11 декабря 2018
Go To AppServiceProvider.php in ```app\Providers```

и измените boot(), добавив эту строку

\Schema::defaultStringLength(191);


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

Laravel по умолчанию использует набор символов utf8mb4, который включает в себя поддержку хранения «emojis» в базе данных.Если вы используете версию MySQL, более раннюю, чем выпуск 5.7.7, или MariaDB старше, чем выпуск 10.2.2, вам может потребоваться вручную настроить длину строки по умолчанию, создаваемую миграциями, чтобы MySQL создавал для них индексы.Вы можете настроить это, вызвав метод Schema::defaultStringLength в вашем AppServiceProvider

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...