2

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))

整数フィールドに長さを設定しようとしているためです。どんな助けでも大歓迎です。

4

1 に答える 1