Ошибка миграции Laravel: синтаксическая ошибка или нарушение прав доступа: 1071 указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт

Ошибка миграции Laravel: синтаксическая ошибка или нарушение прав доступа: 1071 указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт

15.02.2017 11:49:29 Просмотров 73 Источник

Ошибка миграции на Laravel 5.4 с php artisan make:auth

[Illuminate\Database\QueryException] SQLSTATE[42000]: синтаксическая ошибка или нарушение прав доступа: 1071 указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт (SQL: alter tabl e usersadd unique users_email_unique(email))

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa#comment71649261_42244541
Вы должны ответить на свой вопрос в ответе. Не в этом вопрос. stackoverflow.com/help/self-answer
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa#comment71650199_42244541
Спасибо за предложение @can-vural, я сделал.

Ответы - Ошибка миграции Laravel: синтаксическая ошибка или нарушение прав доступа: 1071 указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт / Laravel Migration Error: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Является ответом!
absiddiqueLive

15.02.2017 12:52:58

Согласно официальной документации, вы можете решить эту проблему довольно легко.

Добавьте следующий код в AppServiceProvider.на PHP (/приложение/поставщики/AppServiceProvider.РНР)

use Illuminate\Support\Facades\Schema; //NEW: Import Schema

function boot()
{
    Schema::defaultStringLength(191); //NEW: Increase StringLength
}

MySQL резервирует всегда максимальное количество для поля UTF8, которое составляет 4 байта, поэтому с 255 + 255 с вашим набором символов по умолчанию utf8mb4 COLLATE utf8mb4_unicode_ci; вы превышаете предел максимальной длины ключа 767. Автор @scaisedge

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment71704030_42245921
Будьте осторожны с этим решением. Например, если индексировать поля электронной почты, то максимальная длина сохраненных сообщений может составлять только 191 символ. Это меньше, чем в официальном документе.
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment71739928_42245921
Это решение рекомендовать силой Laravel github.com/laravel/framework/issues/17508 laracasts.com/discuss/channels/laravel/…
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment71744268_42245921
Это работает и является допустимым решением, но я просто хотел отметить, что есть возможные подводные камни, используя этот подход.
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment74889980_42245921
Я надеюсь, что это решение не придет, чтобы укусить меня в задницу в будущем, но на данный момент это работает. Мне придется быть осторожным с тем, как я индексирую электронные письма.
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment76112617_42245921
почему именно 191 символ @absiddiqueLive
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment79223703_42245921
Это решение сработало и для меня :)
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment83798189_42245921
Решение работает . Такое же решение и здесь : laravel-news.com/laravel-5-4-key-too-long-error
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment89281747_42245921
это прекрасно работает на Laravel 5.6..
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment91312957_42245921
работаем над 5.7.0 . но почему 191?
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment100091105_42245921
Вы должны раскомментировать $app - >register(App\Providers\AppServiceProvider:: class); в bootstrap/app.РНР
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment102582249_42245921
Работает для меня на Laravel 5.7 и общий хостинг без SSH. Спасибо!
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42245921#comment103783176_42245921
это не работа для меня :(
Esteban Herrera

20.02.2017 10:39:20

Эта проблема вызвана в Laravel 5.4 версией базы данных.

Согласно документам (в разделе Index Lengths & MySQL / MariaDB):

Laravel использует utf8mb4метод в вашем Schema::defaultStringLength.

Другими словами, в AppServiceProvider:

<ROOT>/app/Providers/AppServiceProvider.php

Но как говорится в комментарии к другому ответу:

Будьте осторожны с этим решением. Например, если вы индексируете поля электронной почты, сохраненные сообщения электронной почты могут иметь только максимальную длину 191 символов. Это меньше чем официальный RFC заявляет.

Таким образом, документация также предлагает другое решение:

Кроме того, вы можете включить опцию innodb_large_prefix для вашего база данных. Инструкции см. В документации к базе данных как правильно включить эту опцию.

user7688086

10.03.2017 07:02:04

В AppServiceProvider.php, вы включаете этот код в начало файла.

use Illuminate\Support\Facades\Schema;

public function boot()
{
Schema::defaultStringLength(191);
}
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/42709989#comment102620125_42709989
Спасибо, что выручил меня
helloroy

21.04.2017 07:46:22

Для тех, кто не хочет менять AppServiceProvider.php. (На мой взгляд, это плохая идея, чтобы изменить AppServiceProvider.php только для миграции)

Вы можете добавить обратно длину данных в файл миграции в разделе database/migrations/, как показано ниже:

create_users_table.php

$table->string('name',64);
$table->string('email',128)->unique();

create_password_resets_table.php

$table->string('email',128)->index();
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/43548053#comment76208308_43548053
Это может быть проблемой, так как электронные письма могут быть до 255 (ish) символов
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/43548053#comment76228015_43548053
Вы правы @HalfCrazed, но я предлагаю этот ответ stackoverflow.com/questions/1297272
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/43548053#comment102682595_43548053
моя проблема точно была разрешима этим решением. Мои поля не были электронными письмами.
chintan kotadiya

25.06.2017 11:03:06

Если вы хотите изменить в AppServiceProvider, то вам нужно определить длину поля электронной почты в миграции. просто замените первую строку кода на вторую строку.

create_users_table

$table->string('email')->unique();
$table->string('email', 50)->unique();

create_password_resets_table

$table->string('email')->index();
$table->string('email', 50)->index();

После успешного изменения вы можете запустить миграцию.
Примечание: сначала необходимо удалить (если есть) таблицу users, таблицу password_resets из базы данных и удалить записи users и password_resets из таблицы миграции.

Md. Noor-A-Alam Siddique

24.07.2017 11:21:50

Вместо того, чтобы устанавливать ограничение на длину, я бы предложил следующее, что сработало для меня.

Внутри

конфигурация / база данных.РНР

замените эту строку для MySQL

'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',

на

'engine' => null,
Koushik Das

17.09.2017 11:29:58

Я не знаю, почему вышеприведенное решение и официальное решение, которое добавляет

Schema::defaultStringLength(191);

в AppServiceProvider не работает для меня. То, что работало для редактирования database.php-файл в config

к

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

и это должно сработать. Надеюсь, это поможет.

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46262128#comment79866239_46262128
Использование этого набора символов позволит вам сохранить только стандартный ASCII, а не многобайтовые специальные символы, такие как арабские, еврейские, большинство европейских скриптов и, конечно же, emoji. см. также stackoverflow.com/a/15128103/4233593
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46262128#comment87058313_46262128
Все равно не сработало! Есть идеи??
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46262128#comment90774194_46262128
Я думаю, что вы пропустили эту часть use Illuminate\Support\Facades\Schema;в верхней части.
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46262128#comment102868029_46262128
это то, что мы должны использовать ! спасибо большое :)
Dexter Bengil

09.10.2017 10:50:30

Я просто добавляю этот ответ здесь, поскольку это самое quickestрешение для меня. Просто установите компонент database engine по умолчанию на 'InnoDB'on

/config/database.php

'mysql' => [
    ...,
    ...,
    'engine' => 'InnoDB',
 ]

затем запустите php artisan config:cache, чтобы очистить и обновить кэш конфигурации

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment92901104_46641266
Работает отлично спасибо.
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment94375855_46641266
смена движка с null на InnoDB сработала
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment95649691_46641266
Это должно быть отмечено как лучшее решение
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment96542953_46641266
Это должно быть принятое решение-Спасибо
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment97247878_46641266
Это должно быть официальным ответом/решением на этот вопрос... Спасибо
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment97477091_46641266
Это фактическое решение, другие обходные пути
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/46641266#comment102210267_46641266
но какая логика стоит за этим
F.E Noel Nfebe

06.12.2017 06:43:28

Чтобы избежать изменения чего-либо в вашем коде, просто обновите ваш сервер MySQL по крайней мере до 5.7.7

Ссылка на это для получения дополнительной информации : https://laravel-news.com/laravel-5-4-key-too-long-error

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/47678179#comment104042756_47678179
Нет, Mariadb 10.1.41 в 18.04 также имеет эту ошибку.
Mohamed Allal

17.01.2018 11:37:12

Как уже было указано, мы добавляем в AppServiceProvider.php в приложении / провайдерах

use Illuminate\Support\Facades\Schema;  // add this

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191); // also this line
}

вы можете увидеть более подробную информацию в ссылке ниже (Поиск " Index Lengths & MySQL / MariaDB") https://laravel.com/docs/5.5/migrations

Но хорошо, что это не то, о чем я опубликовал все! дело в том, что даже при выполнении вышеизложенного вы, скорее всего, получите еще одну ошибку (это когда вы запускаете php artisan migratemigrate, и из-за проблемы длины операция, скорее всего, застрянет в середине. решение приведено ниже , и пользовательская таблица, вероятно, создана без остатка или не совсем правильно) нам нужно откатиться назад . откат по умолчанию не будет работать. потому что операция по миграции не понравилась финишу. вы должны удалить новые созданные таблицы в базе данных вручную.

мы можем сделать это с помощью tinker, как показано ниже:

L:\todos> php artisan tinker

Psy Shell v0.8.15 (PHP 7.1.10 — cli) by Justin Hileman

>>> Schema::drop('users')

=> null

У меня самого была проблема с таблицей пользователей.

после этого вы можете идти

php artisan migrate:rollback

php artisan migrate

user9162235

19.01.2018 08:43:59

Как описано в руководстве по миграции, чтобы исправить это, все, что вам нужно сделать, это отредактировать app/Providers/AppServiceProvider.phpфайл и внутри метода загрузки установите длину строки по умолчанию:

use Illuminate\Support\Facades\Schema;

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

Примечание: сначала вы должны удалить (если у вас есть) таблицу users, таблицу password_resets из базы данных и удалить записи users и password_resets из таблицы миграций.

Чтобы выполнить все ваши выдающиеся миграции, выполните команду migrateArtisan:

php artisan migrate

После этого все должно работать как обычно.

Udhav Sarvaiya

08.02.2018 09:37:55

Я нашел два решения для этой ошибки

Вариант 1:

Откройте таблицу user и password_reset в папке database / migrations

И просто измените длину письма:

$table->string('email',191)->unique();

Вариант 2:

Откройте app/Providers/AppServiceProvider.php-файл и внутри boot()установите длину строки по умолчанию:

use Illuminate\Support\Facades\Schema;

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

08.02.2018 01:44:39

Это распространено, так как Laravel 5.4 изменил стандартный набор символов базы данных на utf8mb4. Что вам нужно сделать, это: изменить приложение\провайдеры.в PHP, поставив этот код перед объявлением класса

use Illuminate\Support\Facades\Schema;

Кроме того, добавьте это в функцию загрузки Schema::defaultStringLength(191);

Ahmad Shakib

20.04.2018 09:24:12

Я решил эту проблему и отредактировал мою конфигурацию - > база данных.php файл, как моя база данных ('charset' => 'utf8')> и ('collation' => 'utf8_general_ci')>, так что моя проблема решена код, как показано ниже:

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_general_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],
Fatema T. Zuhora

23.04.2018 12:08:24

Schema::defaultStringLength(191);определит длину всех строк 191 по умолчанию, что может привести к разрушению вашей базы данных. Вы не должны идти этим путем.

Просто определите длину любого конкретного столбца в классе миграции базы данных. Например, я определяю "имя", "имя пользователя" и "адрес электронной почты" в CreateUsersTable

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/49977215#comment89644808_49977215
Это наиболее предпочтительно для меня, поскольку я бы предпочел не настраивать какие-либо основные коды Laravel.
Brynn Bateman

25.04.2018 10:20:40

Для всех, кто мог бы столкнуться с этим, моя проблема заключалась в том, что я делал столбец типа stringи пытался сделать его ->unsigned(), когда я хотел, чтобы он был целым числом.

Kaizoku Gambare

17.05.2018 12:03:54

Я думаю, что заставить StringLenght до 191-это действительно плохая идея. Поэтому я исследую, чтобы понять, что происходит.

Я заметил, что это сообщение об ошибке :

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

Начал появляться после того, как я обновил свою версию MySQL. Поэтому я проверил таблицы с PHPMyAdmin, и я заметил, что все новые таблицы, созданные были с параметрами сортировки utf8mb4_unicode_ci вместо utf8_unicode_ci для старых.

В моем файле конфигурации доктрины я заметил, что charset был установлен в utf8mb4, но все мои предыдущие таблицы были созданы в utf8, поэтому я предполагаю, что это какая-то магия обновления, которая начинает работать на utf8mb4.

Теперь легко исправить, чтобы изменить кодировку строки в вашем файле конфигурации ORM. Затем, чтобы удалить таблицы с помощью utf8mb4_unicode_ci, если вы находитесь в режиме dev или исправить кодировку, если вы не можете их удалить.

Для Symfony 4

измените кодировку: utf8mb4 на кодировку: utf8 в config / packages / doctrine.и YAML

Теперь моя доктрина миграции снова работает просто отлично.

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/50387455#comment94994879_50387455
Спасибо, это работа для моего ubuntu !
Arslan Ahmad

28.06.2018 04:33:26

Я добавляю два решения, которые работают для меня.

1-е решение :

  1. Откройте базу данных.в php файл внутри конфига каталог/папку.
  2. Редактирование 'engine' => null, для 'engine' => 'InnoDB',

    Это сработало для меня.

2-ое решение является:

  1. Откройте базу данных.в php файл внутри конфига каталог/папку.
    2.Править
    'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci',
    к

    'charset' => 'utf8', 'collation' => 'utf8_unicode_ci',


Гудлак

Tiago Gouvêa

24.07.2018 04:23:31

Подход, который здесь работает, - это передать второй парам с именем ключа (короткий):

$table->string('my_field_name')->unique(null,'key_name');
Anjani Barnwal

28.09.2018 09:15:17

обновите и вставьте эти строки в app / Providers / AppServiceProvider.РНР

use Illuminate\Support\Facades\Schema;  // add this line at top of file

public function boot()
{
    Schema::defaultStringLength(191); // add this line in boot method
}
Mahesh Gaikwad

16.11.2018 09:34:27

Я только что изменил следующую строку в usersфайле миграции users и password_resets.

Старый : password_resets

Новый : $table->string('email')->unique();

Sammie

28.11.2018 10:59:53

Рекомендуемое решение-включить innodb_large_prefixфайл конфигурации MySQL и добавьте следующие строки под my.ini, как это.

[mysqld]

После этого сохраните изменения и перезапустите службу MySQL.

Откат, если вам нужно, а затем повторно запустить миграцию.


На всякий случай, если ваша проблема все еще сохраняется, перейдите в файл конфигурации базы данных и установите

[mysqld] innodb_file_format = Barracuda innodb_large_prefix = 1 innodb_file_per_table = ON для 'engine' => null,

Надеюсь, это поможет!

Abdul Rasheed

17.01.2019 07:52:49

Если вы столкнулись с этой ошибкой при работе на laravel при использовании команды: php artisan migrate затем вы просто добавляете 2 строки в файл: app - >Providers - > > AppServiceProvider.РНР

  1. use Schema;
  2. Schema::defaultStringLength(191);

пожалуйста, проверьте это изображение . затем снова запустите команду php artisan migratemigrate.

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/54229254#comment98288016_54229254
очень важно добавить " использовать схему;". Так что это лучший ответ
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/54229254#comment98484012_54229254
Вы также можете сделать это в одной строке, добавив обратную косую черту ' \ ' перед 2-й строкой, как это \Schema::defaultStringLength(191);
mohammad asghari

08.02.2019 11:10:38

1-Перейдите в /config/database.phpи найдите эти строки

'mysql' => [
    ...,
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    ...,
    'engine' => null,
 ]

и изменить их на:

'mysql' => [
    ...,
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    ...,
    'engine' => 'InnoDB',
 ]

2-Запустите php artisan config:cacheдля перенастройки laravel

3-Удалите существующие таблицы в базе данных, а затем снова запустите php artisan migrate

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/54588255#comment98370745_54588255
это лучший ответ для laravel 5.8. Но удалите уже созданные таблицы
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/54588255#comment102587782_54588255
Он также работал на laravel 6.икс
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/54588255#comment104042679_54588255
но согласно документации "utf8" будет использовать устаревший режим utf8, хотя?
Uddyan Semwal

07.03.2019 07:40:24

В AppServiceProvider.php-файл:

 use Illuminate\Support\Facades\Schema;

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

21.04.2019 04:41:40

Если у вас еще нет данных, назначенных для вашей базы данных, выполните следующие действия:

  1. Перейдите в приложение / провайдеры / AppServiceProvide.PHP и добавить

используйте Illuminate\Support\ServiceProvider;

и внутри метода загрузки();

Схема:: defaultStringLength(191);

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

  2. выполните следующие действия

php artisan config: кэш

в PHP ремесленника перенести

https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/55779188#comment98888425_55779188
Он работал, но надо добавить use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; это уже есть. Надеюсь, вы исправите это
Jacey

02.05.2019 07:26:17

Я получал эту ошибку, хотя я уже имел (на самом деле, потому что я уже имел) Схема:: defaultStringLength(191); в моем AppServiceProvider.PHP-файл.

Причина в том, что я пытался установить строковое значение в одной из моих миграций на значение выше 191:

Schema::create('order_items', function (Blueprint $table) {
    $table->primary(['order_id', 'product_id', 'attributes']);
    $table->unsignedBigInteger('order_id');
    $table->unsignedBigInteger('product_id');
    $table->string('attributes', 1000); // This line right here
    $table->timestamps();
});

Удаление 1000 или установка его в 191 решили мою проблему.

Adam Winster

09.05.2019 07:16:29

Изменение типа сервера локальной базы данных с "mariadb" на "mysql" исправило это для меня без необходимости редактировать какие-либо файлы Laravel.

Я следовал этому руководству, чтобы изменить тип моего сервера БД: https://odan.github.io/2017/08/13/xampp-replacing-mariadb-with-mysql.html

Smith

08.06.2019 03:16:11

Вы можете задать длину строки индексированного поля следующим образом:

  $table->string('email', 200)->unique();
Scotty G

21.06.2019 02:57:22

Для Люмена:

Добавить к .env файл

DB_ENGINE=InnoDB
https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa/56695242#comment104042601_56695242
Звучит хорошо, но никаких изменений в Laravel 6
Goldman.Vahdettin

07.07.2019 11:59:42

сначала удалите все таблицы базы данных в localhost

Измените свойства базы данных Laravel по умолчанию (utf8mb4)в файле config/database.PHP для:

'кодировка' => 'в кодировке utf8', 'сортировки' => 'utf8_unicode_ci',

после этого Изменение свойств локальной базы данных utf8_unicode_ci. в PHP ремесленника перенести все в порядке.

Rohit Saini

17.07.2019 08:13:31

Как описано в руководстве по миграции, чтобы исправить это все, что вам нужно сделать, это отредактировать свой AppServiceProvider.php файл и внутри метода загрузки установите длину строки по умолчанию:

//edit your AppServiceProvider.php file contains in providers folder
use Illuminate\Support\Facades\Schema;

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

Надеюсь, это поможет вам..овации..

Ali A. Dhillon

08.11.2019 11:06:13

Решение, которое никто не говорит, заключается в том, что в Mysql v5. 5 и более поздних InnoDB является механизмом хранения по умолчанию, который не имеет этой проблемы, но во многих случаях, таких как мой, есть некоторые старые файлы конфигурации mysql ini, которые используют старый MYISAM

default-storage-engine=MYISAM

который создает все эти проблемы, и решение состоит в том, чтобы изменить default-storage-engine InnoDB в файле конфигурации ini Mysql один раз для всех вместо того, чтобы делать временные вещи.

default-storage-engine=InnoDB
NoBugs

16.11.2019 09:55:51

Всего несколько строк в файле /etc / mysql / mariadb.конф.d / 50-сервер.cnf или где бы ни была ваша конфигурация:

innodb-file-format=barracuda
innodb-file-per-table=ON
innodb-large-prefix=ON
innodb_default_row_format = 'DYNAMIC'

и sudo service mysql restart

https://stackoverflow.com/a/57465235/778234

Смотрите документы: https://dev.mysql.com/doc/refman/5.6/en/innodb-row-format.html

Закрыть X