当我在Laravel5.6中做多个唯一的列时,我能给一个自定义的名称吗?

bbmckpt7  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(257)

考虑以下示例:

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

然后抛出错误:
sqlstate[42000]:语法错误或访问冲突:1059标识符名称“lsd\u location\u units\u site\u id\u inventory\u items\u lsd\u location\u id\u unique”太长(sql:alter table) 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 或者类似的?
a) mysql允许这样做吗?
b) 有办法解决这个问题吗?因为我需要这三个。
目标是说每个站点每个lsd位置id只有一个库存物品id。

mwkjh3gx

mwkjh3gx1#

第二个论点 unique 是索引键名称,请尝试:

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

来自laravel docs: Laravel will automatically generate a reasonable index name, but you may pass a second argument to the method to specify the name yourself MySQL5.6中的最大索引名长度为64个字符(ref)

相关问题