[英]How do I create a GiST index on a PostGIS geometry column using DBIx::Class?
[英]How do you specify index length when using DBIx::Class?
我正在使用DBIx :: Class並且正在使用sqlt_deploy_hook來:
sub {
my ($self, $sqlt_table) = @_;
$sqlt_table->add_index(name => 'indexes', fields => [keys %for_indexing]);
}
我要索引的某些列是text類型的,或者是varchars> 255長度。 MySQL不喜歡文本索引,除非您指定長度,如下所示:
index (long_field(996))
但是看一下SQL :: Translator :: Schema :: Table(具有add_index方法)和Index,我看不到指定長度的方法。
add_index(name => 'indexes', fields => ['long_field'])
生成此SQL:
INDEX `indexes` (`long_field`)
和這個:
add_index(name => 'indexes', fields => ['long_field(996)'])
生成此SQL:
INDEX `indexes` (`long_field(996)`)
這不起作用,因為沒有具有該名稱的列。
到目前為止,我只是通過不對文本列進行索引來解決此問題。 但是,我現在正在嘗試使用DBIx :: Class :: DeploymentHandler,它在我“安裝”時將我的長varchars轉換為文本列,而我確實需要索引這些varchar列。
我能做什么?
抱歉, SQL::Translator
根本不了解如何生成具有長度的索引聲明,這意味着DBIC deploy
和DBICDH也無法做到這一點,因為它們是通過SQLT進行工作的。 如果您想通過irc.perl.org #sql-translator
討論此功能的工作原理以及接口是什么,可能會添加它,但目前尚無法實現。
關於您的斷言DBICDH是“將我的長varchars轉換為文本列”,這有一個很大的錯誤; 對於DBICDH而言,這不是您期望的行為。 請發布有關該問題的新問題,以顯示您在做什么,或將其帶到irc.perl.org #dbix-class
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.