SQL

PostgreSQL运算符类“ archar_pattern_ops”不接受整数数据类型

发布于 2021-03-27 16:52:56

我正在尝试将我的数据ID
postgresql从字符串迁移到Django中的整数,以便在狮身人面像搜索中使用它们。所以首先我要进行数据迁移,将我的数据转换为像这样的字符串整数

db.execute('''UPDATE the_table SET foo='1' WHERE foo='bar';''')

然后我要进行架构迁移

ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);

但是我遇到了一个错误

错误:运算符类“ varchar_pattern_ops”不接受数据类型整数

SQL-褋芯褋褌芯褟薪弱武器:42804

在South和pgAdmin中都会发生此错误。数据正确-字符串类型为Null或整数。我究竟做错了什么?

关注者
0
被浏览
142
1 个回答
  • 面试哥
    面试哥 2021-03-27
    为面试而生,有面试问题,就找面试哥。

    我只能像这样重现您的错误消息:

    denis=# create index test_idx on test (val varchar_pattern_ops);
    CREATE INDEX
    denis=# alter table test alter val type int using (val::int);
    ERROR:  operator class "varchar_pattern_ops" does not accept data type integer
    

    如果您有这样一个时髦的索引,请尝试像这样删除并重新创建它:

    denis=# drop index test_idx;
    DROP INDEX
    denis=# create index test_idx on test (val);
    CREATE INDEX
    denis=# alter table test alter val type int using (val::int);
    ALTER TABLE
    

    相关文档:

    http://www.postgresql.org/docs/current/static/indexes-
    opclass.html



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看