【发布时间】:2020-05-02 09:14:34
【问题描述】:
我正在关注Optimizing Full Text Search in Django 的文章,文章在某些时候说:
为了添加触发器,我们需要制作手动 Django 迁移。 这将添加触发器功能并将我们所有的 Pages 行更新为 确保触发触发器并且 content_search 填充在 我们现有记录的迁移时间。
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('web', '0002_auto_20200115_1401')
]
migration = '''
CREATE TRIGGER content_search_update BEFORE INSERT OR UPDATE
ON web_page FOR EACH ROW EXECUTE FUNCTION
tsvector_update_trigger(content_search, 'pg_catalog.english', content);
-- Force triggers to run and populate the text_search column.
UPDATE web_page set ID = ID;
'''
reverse_migration = '''
DROP TRIGGER content_search ON web_page;
'''
operations = [migrations.RunSQL(migration, reverse_migration)]
当我运行迁移时出现此错误:
django.db.utils.ProgrammingError:“FUNCTION”处或附近的语法错误
我的settings.py 与教程文章的一个区别是它使用django.db.backends.postgresql 作为数据库引擎,而我使用django.db.backends.postgresql_psycopg2
这里可能是什么问题,更重要的是我该如何解决这个问题?
提前致谢。
【问题讨论】:
标签: python django postgresql search