我正在运行以下查询:
WITH match_team_vals(match_id, team_id, is_radiant) AS (
VALUES
(2281450916, 2783913, true),
(2281450916, 2538753, false)
)
INSERT INTO dota_match_team(match_id, team_id, is_radiant)
SELECT match_id, team_id, is_radiant
FROM match_team_vals
RETURNING id AS lineup_id
Run Code Online (Sandbox Code Playgroud)
在这张桌子上:
CREATE TABLE dota_match_team
(
id serial NOT NULL,
match_id integer NOT NULL,
team_id integer,
is_radiant boolean NOT NULL,
CONSTRAINT dota_match_teams_pkey PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是
ERROR: integer out of range
SQL state: 22003
Run Code Online (Sandbox Code Playgroud)
我已经尝试将match_id和team_id强制转换为bigint.同时在线查看我看到人们在串口达到整数上限时遇到了这个问题.似乎并非如此:
SELECT nextval('dota_match_team_id_seq')
returns 31
Run Code Online (Sandbox Code Playgroud)
23t*_*tux 10
考虑更改表以使用更大的整数(有关详细信息,请参阅此处:http://www.postgresql.org/docs/9.1/static/datatype-numeric.html).
我认为问题是,你的match_id和team_id有型的integer,你尝试插入值2281450916,但整数的最大值2147483647