Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ecto or Elixir datatype that maps to MySql BIGINT

I'm new to Elixir and Phoenix (6 months learning), I have a situation where I want to assign an Ecto model's field (not primary key or table ID) to BIGINT in MySql.

I realize when you create an Ecto model, the ID of that model in MySql table would automatically mapped to BIGINT after migration.

After checking this site, I tried to create an Ecto model's field to :integer or :id in both model and its corresponding migration script but it always gives me INT datatype in MySql.

Anybody knows what datatype in Elixir or Ecto that corresponds to BIGINT in MySql, so when I execute the migration script my table will have that particular column as BIGINT?

Thanks

like image 668
Kunto Fullstack Avatar asked Jul 30 '17 14:07

Kunto Fullstack


1 Answers

The type in the migration should be the actual database type and in the schema it should be the type you want in Elixir. Since Elixir supports arbitrary precision integers, all integer types in databases are usually mapped to the native :integer type. So what you want is to use the :bigint type in the migration and :integer in the schema.

create table(:foos) do
  add :bar, :bigint
end

<!-- -->

schema "foos" do
  field :bar, :integer
end
like image 101
Dogbert Avatar answered Sep 28 '22 12:09

Dogbert