Error al crear un índice único para Mysql / Mariadb
Intento hacer la siguiente migración:
defmodule Shopper.Repo.Migrations.MakeNameUniqueShopper do
use Ecto.Migration
def change do
create unique_index :shoppers, [:name]
end
end
También probécreate unique_index :shoppers, [:name], name: :name_unique
, create unique_index :shoppers, [:name], name: "name_unique"
ycreate index(:shoppers, [:name], unique: true)
Pero fallaron con un error similar:
[info] == Running Shopper.Repo.Migrations.MakeNameUniqueShopper.change/0 forward
[info] create index shoppers_name_index
** (Mariaex.Error) (1071): Specified key was too long; max key length is 767 bytes
(ecto) lib/ecto/adapters/sql.ex:172: Ecto.Adapters.SQL.query!/5
(elixir) lib/enum.ex:1261: Enum."-reduce/3-lists^foldl/2-0-"/3
...
...
Cualquier ayuda sería muy apreciada, para ayudarme con el error.
Nota: Estoy usando ecto 1.02
A continuación se muestra la primera migración creada conmix phoenix.gen.model
defmodule Shopper.Repo.Migrations.CreateV1.Shopper do
use Ecto.Migration
def change do
create table(:shoppers) do
add :name, :string
add :oauth_token, :string
timestamps
end
end
end
Informacion: elname
el campo es utf8mb4, especificado por mi esquema
Actualizar: Sé que la solución es reducir elname
longitud del campo, pero ¿cómo hacer que funcione con el modelo Phoenix y la migración? Como se espera una cuerda?