Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Postgresql中强制删除运算符?_Postgresql - Fatal编程技术网

如何在Postgresql中强制删除运算符?

如何在Postgresql中强制删除运算符?,postgresql,Postgresql,我的数据库有从整数到文本的隐式转换,所以我遇到了一些“运算符不是唯一的”问题。我试图删除运算符| |(文本,anynonarray),但未成功,错误消息为 错误:无法删除运算符| |(文本,anynonarray),因为它是数据库系统所必需的 SQL状态:2BP01 我有另一个数据库没有这个操作符,所以我认为这是可能的。我无法在数百个查询中添加显式强制转换,也无法删除隐式强制转换。有办法强制移除这个操作员吗?看来我明白了。诀窍是从pg_操作符表中删除右键 delete from pg_opera

我的数据库有从整数到文本的隐式转换,所以我遇到了一些“运算符不是唯一的”问题。我试图删除运算符| |(文本,anynonarray),但未成功,错误消息为

错误:无法删除运算符| |(文本,anynonarray),因为它是数据库系统所必需的 SQL状态:2BP01


我有另一个数据库没有这个操作符,所以我认为这是可能的。我无法在数百个查询中添加显式强制转换,也无法删除隐式强制转换。有办法强制移除这个操作员吗?

看来我明白了。诀窍是从pg_操作符表中删除右键

delete from pg_operator where oprname = '||' and (oprleft = 25 or oprleft = 2776 ) and oprleft != oprright
因为我想删除这些运算符:

运算符| |(“文本”,任意数组)

运算符| |(anynonarray,“text”)


我不知道是否有任何影响,但到目前为止似乎还可以。

2BP01表示它有依赖对象,您是否在drop命令中尝试了级联?使用级联时要小心,因为它可能会比您想要的下降得更多,所以请先进行备份。drop OPERATOR | | |(anynonarray,text)CASCADE;错误仍在继续。这是一个系统操作员,即您不能删除它。但是这里有另一个数据库,它没有这些操作员!涉及哪些PostgreSQL版本?您正在从基本Postgres系统中删除运算符:
textanycat
anytextcat
。通常计算为文本
a1
/
1a
的形式为
'a'::text | |'1'::int
'1'::int | |'a'::text
的表达式将产生错误。扩展、客户机或任何SQL代码可能使用这些运算符,并意外失败。简而言之:不要在家里尝试!选择'a'::text | |'1'::int,但另一个没有产生错误