Несколько дней назад я начал использовать Elixir и Phoenix Framework (v 0.12.0) с базой данных Postgres. Я пытаюсь создать таблицу с первичным ключом UUID, который я предпочитаю по последовательному по умолчанию.
После использования mix phoenix.gen.html
для создания файлов модели и миграции и последующих действий в документах Phoenix я изменил
def model do
quote do
use Ecto.Model
end
end
в web.ex
до
def model do
quote do
use Ecto.Model
@primary_key {:id, :uuid, []}
@foreign_key_type :uuid
end
end
как указано в документах Ecto. Я также изменил миграцию на
create table(:tblname, primary_key: false) do
add :id, :uuid, primary_key: true
[other columns]
end
К сожалению, когда я пытаюсь добавить запись в таблицу из автоматически сгенерированной формы, я получаю сообщение об ошибке, потому что id
имеет значение null. Если я вручную добавлю id
-column в модель, я получаю сообщение о том, что столбец уже существует. Если я пренебрег установкой primary_key
на false в table/2
и удалит столбец id
, таблица будет создана с последовательным id
-column.
Нужно ли вручную установить id
в наборе изменений или я сделал ошибку при настройке моего приложения для использования UUID? Спасибо заранее