【问题标题】:Could not open extension control file citext.control无法打开扩展控制文件 citext.control
【发布时间】:2021-12-05 22:38:57
【问题描述】:

环境

Ubuntu 20.04 和 Debian 10 分别使用 Python 3.8 或 3.7。

已经尝试过 Postgresql 版本 11、12 和 14。

Psycopg2-二进制 2.8.6

概述

我正在尝试安装 Django 项目,但出现此错误:

psycopg2.errors.UndefinedFile: could not open extension control file "/usr/share/pgsql/extension/citext.control": No such file or directory

psycopg 开发人员告诉我这可能是 postgresql-contrib 库的问题。同样,其他人已经能够fix this error by installingpostgresql-contrib,但是,这对我不起作用。我也试过安装postgresql-12。

我可以看到/usr/share/postgresql/12/extension/citext.control中可以使用citext.control,所以我尝试ln -s /usr/share/postgresql/12 /usr/share/pgsql没有效果。

我也在 Postgres 中运行了CREATE EXTENSION citext;,同样没有效果。

任何对此的支持将不胜感激,因为我希望这个项目已经上线!

非常感谢。

跟踪

Running migrations:
  Applying core.0043_install_ci_extension_pg...Traceback (most recent call last):
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedFile: could not open extension control file "/usr/share/pgsql/extension/citext.control": No such file or directory


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 16, in <module>
    execute_from_command_line(sys.argv)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/user/janeway/src/utils/management/commands/install_janeway.py", line 58, in handle
    call_command('migrate')
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/__init__.py", line 131, in call_command
    return command.execute(*args, **defaults)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 202, in handle
    post_migrate_state = executor.migrate(
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/contrib/postgres/operations.py", line 17, in database_forwards
    schema_editor.execute("CREATE EXTENSION IF NOT EXISTS %s" % schema_editor.quote_name(self.name))
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 136, in execute
    cursor.execute(sql, params)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/user/venvs/janeway/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.OperationalError: could not open extension control file "/usr/share/pgsql/extension/citext.control": No such file or directory

【问题讨论】:

    标签: python-3.x django postgresql ubuntu psycopg2


    【解决方案1】:

    我在本地 django 服务器而不是远程 DB 服务器上安装了 postgresql-contrib。安装在与 Postgresql 相同的服务器上解决了这个问题。

    【讨论】:

      【解决方案2】:

      您是否尝试过从包装系统安装python3-psycopg2?

      我的 Ubuntu 20 安装程序已经安装了这个,并且 postgresql 连接可以与 django 一起使用。

      ii python3-psycopg2 2.8.4-2 amd64 Python 3 module for PostgreSQL

      【讨论】:

      • 感谢您的建议,@Anurag 我刚刚尝试使用来自 apt 的 python3-psycopg2,但没有任何成功(我使用 --system-site-packages 将其传递到 venv)。我分别尝试在 pip 中从 psycopg2-binary 更改为 psycopg2,但也没有任何成功。
      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 2020-01-01
      • 2020-03-27
      相关资源
      最近更新 更多