Я пытаюсь выполнить следующую миграцию:
defmodule Shopper.Repo.Migrations.MakeNameUniqueShopper do
use Ecto.Migration
def change do
create unique_index :shoppers, [:name]
end
end
Также пробовал create unique_index :shoppers, [:name], name: :name_unique
, create unique_index :shoppers, [:name], name: "name_unique"
и create index(:shoppers, [:name], unique: true)
Но они потерпели неудачу с аналогичной ошибкой:
[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
...
...
Любая помощь будет очень признательна, чтобы помочь мне с ошибкой.
Примечание. Я использую ecto 1.02.
Ниже приведена первая миграция, созданная с помощью mix 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
Информация: поле name
имеет значение utf8mb4, указанное в моей схеме
Обновление: я знаю, что решение состоит в том, чтобы уменьшить длину поля name
, но как заставить его работать с моделью phoenix и миграцией? Как он ожидает строку?
SHOW CREATE TABLE
, чтобы мы могли обсудить детали. - person Rick James   schedule 09.09.2015mix phoenix.gen.model
- person ardhitama   schedule 09.09.2015