我正在尝试将我的数据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
错误:运算符类“ varchar_pattern_ops”不接受数据类型整数
SQL-褋芯褋褌芯褟薪弱武器:42804
在South和pgAdmin中都会发生此错误。数据正确-字符串类型为Null或整数。我究竟做错了什么?
我只能像这样重现您的错误消息:
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