Когда я делаю несколько уникальных столбцов, могу ли я дать произвольное имя в 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 символа ( ссылка)