Когда я делаю несколько уникальных столбцов, могу ли я дать произвольное имя в laravel 5.6?

Рассмотрим следующий пример:

$table->unique(['site_id', 'inventory_items', 'lsd_location_id']);

Это затем выдает ошибку:

SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1059 Слишком длинное имя идентификатора 'lsd_location_units_site_id_inventory_items_lsd_location_id_unique' (SQL: изменить таблицу lsd_location_units добавить уникальный lsd_location_units_site_id_inventory_items_lsd_location_id_unique(site_id, inventory_items, lsd_location_id))

Итак, вопрос: могу ли я дать этому другое имя и при этом сохранить уникальный ключ как есть, поэтому вместо его длинного имени может быть: sid_ii_lsd_location_unuiqe или что-то подобное?

А) Это разрешено в MYSQL?

Б) Есть ли способ обойти эту проблему? Как мне нужно все три из них.

Цель состоит в том, чтобы указывать только один инвентаризатор_идентификатора для каждого идентификатора местоположения на каждом сайте.

1 ответ

Решение

Второй аргумент unique это имя ключа индекса, попробуйте:

$table->unique(['site_id', 'inventory_items', 'lsd_location_id'], 'sid_ii_lsd_location_unuiqe');

Из документов Laravel: Laravel will automatically generate a reasonable index name, but you may pass a second argument to the method to specify the name yourself

Максимальная длина имени индекса в MySQL 5.6 составляет 64 символа ( ссылка)

Другие вопросы по тегам