错误:“修改”处或附近的语法错误 - 在 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\" 处或附近出现语法错误”