के लिए असफल रहा निम्न माइग्रेशन करने की कोशिश:Ecto बनाने अद्वितीय सूचकांक mysql/MariaDB
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
...
...
त्रुटि के साथ मेरी सहायता करने के लिए किसी भी मदद की बहुत सराहना की जाएगी।
नोट: name
क्षेत्र utf8mb4, मेरे स्कीमा
उपयोग कर रहा हूँ के बाद से 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
जानकारी बनाया गया पहला प्रवास है
अद्यतन: मुझे पता है कि समाधानको कम करना हैफ़ील्ड लम्बाई, लेकिन इसे फीनिक्स मॉडल और माइग्रेशन के साथ कैसे काम करना है? जैसा कि यह एक स्ट्रिंग की उम्मीद है?
कृपया 'तालिका बनाएं' प्रदान करें ताकि हम विनिर्देशों पर चर्चा कर सकें। –
@ रिकजेम्स मुझे यकीन नहीं है कि यह यहां प्रासंगिक है। यह 'mix phoenix.gen.model' – ardhitama
द्वारा बनाया गया है, हम तालिका के ढांचे को देखे बिना कुंजी में उपयोग किए जा रहे फ़ील्ड को कैसे बता सकते हैं? यही @RickJames पूछ रहा है (अगर मैं सही ढंग से समझ रहा हूं)। –