考虑以下示例:
$table->unique(['site_id', 'inventory_items', 'lsd_location_id']);
这会引发错误:
SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'lsd_location_units_site_id_inventory_items_lsd_location_id_unique' is too long (SQL: alter table
lsd_location_units
add uniquelsd_location_units_site_id_inventory_items_lsd_location_id_unique
(site_id
,inventory_items
,lsd_location_id
))
所以问题是:我可以给它一个不同的名称,并仍然保留唯一的 key ,这样可以代替它的长名称:sid_ii_lsd_location_unuiqe
或类似的东西?
A) MYSQL 允许这样做吗?
B) 有办法解决这个问题吗?因为我需要这三个。
目标是每个站点的每个 LSD 位置 ID 只显示一个 inventory_item_id。
最佳答案
unique
的第二个参数是索引键名称,尝试:
$table->unique(['site_id', 'inventory_items', 'lsd_location_id'], 'sid_ii_lsd_location_unuiqe');
来自 Laravel docs :
Laravel 会自动生成一个合理的索引名称,但您可以将第二个参数传递给方法来自己指定名称
MySQL 5.6 中的最大索引名称长度为 64 个字符 ( ref )
关于mysql - 当执行多个唯一列时,我可以在 laravel 5.6 中给出自定义名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677798/