(im运行servicestack或MLite 5.1.1)
我碰巧有几个对象有一个长名称,现在在设置表时创建一个长名称的表。当ormlite尝试在一列上创建索引时,失败的原因是:
无法创建表co\U bookingrecurring\U recurringbookingadministrationgroup(类型tworks.alfa.alfacommons.bookingrecurring.recurringbookingadministrationgroup):标识符名称“idx\U co\U bookingrecurring\U recurringbookingadministrationgroup\U deleted”太长
所以,我希望 IndexAttribute
还将包含一个构造函数,因此我可以更改它,而不是 idx_deleted
,但我没有找到这样的构造函数或其他方法来处理它。
我找到了inamingstrategy接口和一些示例,但它们似乎不能处理索引名。
有没有办法处理这个问题,这样我就可以正常使用createtable了?
2条答案
按热度按时间rkkpypqq1#
方案a:避免长的用户定义名称:“recurringbookingadministrationgroup”
方案b:(或者可能是ormlite的错):不要在表中任何内容的名称中包含表名(“bookRecurrence”?)(除了“id”)。
方案c:找人修理奥姆利特。修复的一种方法是截断长名称并附加一个固定长度的哈希值,该哈希值应该是过长的名称。
计划d:向bugs.mysql.com提交一份bug报告,抱怨名称限制。
方案e:查看MySQL8.0;它可能有一些增加的限制;不知道他们是否在这里申请。
(同时,我将把这一点添加到我的一长串清单中,说明为什么第三方软件不仅能提供帮助,还能“妨碍”用户。)
irtuqstp2#
我在此提交中添加了对自定义索引名称的支持,这将允许您提供一个自定义索引名称来代替基于约定的索引名称,例如:
此更改可从myget上的v5.1.1中获得。