错误:“修改”处或附近的语法错误 - 在 postgres

Posted

技术标签:

【中文标题】错误:“修改”处或附近的语法错误 - 在 postgres【英文标题】:ERROR: syntax error at or near "modify" - in postgres 【发布时间】:2016-03-28 12:30:51 【问题描述】:

我在 Postgres 中执行了这条 SQL 语句

alter table user modify column 'distinguishedName1' text;

alter table user modify column distinguishedName1 text;
user 是表名 distinguishedName1 是整数数据类型的列名。

我想根据用户的输入将数据类型修改为 boolean 或 text 或 varchar(256) 等。但是当我运行查询时,我得到了错误

错误:“修改”处或附近的语法错误

不确定是什么问题。正确查询需要帮助。

【问题讨论】:

in the manual 在哪里看到修改关键字? 根据用户的输入将数据类型修改为 (...)”听起来是个可怕的想法。你想解决什么问题? 【参考方案1】:

POSTGRES 更改列类型的语法:

ALTER TABLE user ALTER COLUMN distinguishedName1 TYPE text;

【讨论】:

【参考方案2】:

试试这个:

ALTER TABLE "user" ALTER COLUMN distinguishedName1 TYPE text USING code::text;

ALTER TABLE "user" ALTER COLUMN distinguishedName1 TYPE text

还要注意 USING 是可选的。在此处查看manual:

可选的 USING 子句指定如何计算新列 旧有的价值;如果省略,则默认转换与 从旧数据类型到新数据类型的赋值转换。 USING 子句必须是 如果没有从旧到新的隐式或赋值转换,则提供 输入。

附带说明,尽量避免将您的表命名为reserved keywords。

【讨论】:

我认为这里不需要USING 查询“alter table user alter column distinctName1 type text using distinctName1::text; 对我来说很好。但如果我尝试将数据类型更改为整数或布尔值,则相同的查询不起作用。 【参考方案3】:
alter table user Alter column distinguishedName1 text;

语法错误,对于sql server你必须使用alter来修改表的列

【讨论】:

以上是关于错误:“修改”处或附近的语法错误 - 在 postgres的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误”

“.”处或附近的QueryDSL语法错误在多对多的关系

java - PSQLException:错误:“$ 1”处或附近的语法错误[重复]

Npgsql Exception-“\”处或附近的语法错误

错误:“用户”处或附近的语法错误

postgresql 错误:“返回”处或附近的语法错误