Невозможно создать или изменить таблицу без первичного ключа - Laravel Управляемая база данных DigitalOcean - PullRequest
2 голосов
/ 17 июня 2020

Я только что развернул свое приложение в DigitalOcean, используя (Управляемую базу данных), и при вызове php artisan migrate

SQLSTATE[HY000]: General error: 3750 Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing this setting. (SQL: create table `sessions` (`id` varchar(255) not null, `user_id` bigint unsigned null, `ip_address` varchar(45) null, `user_agent` text null, `payload` text not null, `last_activity` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

появляется следующая ошибка: Laravel Миграция не работает, если для mysql var sql_require_primary_key установлено значение true.

Есть ли у вас какие-либо решения для этого?

Ответы [ 3 ]

2 голосов
/ 17 июня 2020

Согласно документации MySQL целью этой системной переменной является

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

IMHO, есть два возможных варианта решения вашей проблемы;

  • Добавьте первичный ключ к этой и каждой таблице в вашей миграции, включая временные таблицы. Этот лучше, и я думаю, более удобный способ сделать это, поскольку нет недостатка в том, чтобы иметь первичный ключ для каждой таблицы.

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

  • Смените поставщика, потому что в соответствии с здесь «Мы поддерживаем только MySQL v8 . "

Также здесь отчет об ошибке

0 голосов
/ 12 августа 2020

Просто set sql_require_primary_key ==off Вот так

Нажмите, чтобы просмотреть изображение

в ваш SQL файл.

0 голосов
/ 17 июня 2020

Когда включено, sql_require_primary_key имеет следующие эффекты:

  1. Попытки создать новую таблицу без первичного ключа завершаются ошибкой. Это включает CREATE TABLE ... LIKE. Он также включает CREATE TABLE ... SELECT, если только часть CREATE TABLE не включает определение первичного ключа.
  2. Попытки удалить первичный ключ из существующей таблицы завершаются ошибкой, за исключением того, что отбрасывается первичный ключ и добавление первичного ключа в тот же оператор ALTER TABLE разрешено.

Удаление первичного ключа не выполняется, даже если таблица также содержит индекс UNIQUE NOT NULL.

Попытки импортировать таблицу без первичного ключа завершаются ошибкой.

Значение по умолчанию OFF, но в вашем случае вам нужно установить OFF из ON

ВАЖНАЯ ССЫЛКА

КАК УСТАНОВИТЬ

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