要解决的问题
数据库中存储的行数超过了
serial
类型所能容纳的数量,因此需要采用bigserial
类型的整数作为主键serial
的取值范围为:1 到 2147483647
bigserial
的取值范围为:1 到 9223372036854775807
迁移脚本
defmodule ElectricProto.Repo.Migrations.AddStationTable do use Ecto.Migration def up do create table(:station,primary_key: false) do add :id,:bigserial,primary_key: true timestamps end end def down do drop table(:station) end end
要点
create table
的参数primary_key
要设置为false
,通过
add
宏指定主键列id
,类型为bigserial
模型的声明
@primary_key {:id,:id,autogenerate: true} schema "station" do field :area,:string,default: "" field :carrier,default: "" field :city,default: "" field :deployed,:boolean,default: false field :description,default: "" field :device_auth,default: "" field :device_type,default: "" field :geolocation,default: "" field :ip_addr,default: "" field :qrcode,default: "" field :station_id,default: "" field :status,default: "" timestamps end
要点
主键要声明为
:id
类型,@primary_key {:id,autogenerate: true}
完!
原文链接:https://www.f2er.com/postgresql/194480.html