创建pgAdmin 4主键时遭遇语法错误求助
解决PostgreSQL设置主键时的语法错误问题
嘿,我一眼就找到你问题的根源啦!你碰到的ERROR: syntax error at or near "("错误,是因为PostgreSQL中的integer类型不需要指定长度参数——像integer (4)这种带括号的写法是MySQL的语法,PostgreSQL可不认这一套哦。
错误分析
你的第一行SQL语句:
ALTER TABLE public.recipes ALTER COLUMN id TYPE integer (4);
这里的(4)完全是多余的,这就是触发语法错误的直接原因。PostgreSQL里的integer是固定4字节的整数类型,默认就覆盖了你想指定的“长度”需求,不需要额外声明。
正确的操作步骤
分两种情况处理:
- 如果
id列已经是integer类型:你根本不需要修改列类型,直接执行添加主键的语句就行 - 如果
id列不是integer类型:先去掉多余的长度参数修改列类型,再添加主键
对应正确SQL代码
情况1:直接添加主键
ALTER TABLE public.recipes ADD PRIMARY KEY (id);
情况2:先修改列类型再添加主键
ALTER TABLE public.recipes ALTER COLUMN id TYPE integer; ALTER TABLE public.recipes ADD PRIMARY KEY (id);
小提示
刚从MySQL转PostgreSQL的话很容易踩这个坑,记住PostgreSQL的整数类型(integer/bigint/smallint)都不需要指定长度,它们的字节数和取值范围是固定的,不用额外配置哦!
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

