在复合唯一索引创建上提供文本列长度

时间:2018-05-11 14:57:54

标签: ruby-on-rails activerecord rails-activerecord composite-index

我正在尝试在新表上创建一个索引,该索引需要agency_id(整数)和IP地址(文本)的唯一性。我知道我需要在IP的索引上提供一个长度。但我有问题将长度分配给只是 IP列。

def up
   create_table :whitelisted_ips do |t|
     t.integer :agency_id
     t.text :ip
     t.timestamps
   end

   add_index :whitelisted_ips, [:agency_id, :ip], unique: true, length: 15
end

此代码返回错误

  

Mysql2 ::错误:前缀键不正确;所使用的关键部分是不是字符串,所使用的长度长于键部分,或存储引擎不支持唯一前缀的键:CREATE UNIQUE INDEX`index_whitelisted_ips_on_agency_id_and_ip` ON`whitelisted_ips`(`agency_id`(15), `ip`(15))

因为它试图将长度放在整数字段上。任何帮助将不胜感激。

0 个答案:

没有答案