Postgresql运算符类"varchar_pattern_ops"不接受数据类型整数

 特别要_966 发布于 2023-02-13 19:37

我正在尝试将我的数据id postgresql从字符串迁移到django中的整数,以便在sphinx搜索中使用它们.首先,我正在进行数据迁移,将数据转换为字符串整数

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或整数.我究竟做错了什么?

2 个回答
  • 我只能像这样重现你的错误信息:

    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

    2023-02-13 19:39 回答
  • 要处理此问题,您必须使用两个迁移步骤.

    第一步:添加db_index=False第一次迁移,然后生成并运行迁移.

    第二步:更新db_index=True到模型中的相关列(根据第一步),然后生成迁移并再次运行.

    这是基于我在某个项目上的经验,而且有效.

    希望能帮助到你.

    2023-02-13 19:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有