【问题标题】:django.db.utils.OperationalError: fe_sendauth: no password supplied when migrating django appdjango.db.utils.OperationalError:fe_sendauth:迁移 django 应用程序时未提供密码
【发布时间】:2021-06-24 06:35:58
【问题描述】:

我是 Django 的初学者,正在从事一个开源项目,该项目非常具有挑战性,因为它只为 Mac 而不是 Linux 提供构建说明。所以,在我的 Ubuntu 服务器上,我已经成功地安装了所有软件包并修复了一些初始错误,但是现在,当我执行 python manage.py migrate 时,我遇到了这个错误:django.db.utils.OperationalError: fe_sendauth: no password supplied

我完全被困在这里:我很难理解错误消息,其他解决方案也没有多大帮助。其他解决方案表明您必须更改 settings.py 中的 DATABASES 设置,但该设置没有 PASSWORD 属性,并且仅链接到 sqlite:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
DATABASES['default'] = dj_database_url.config()

该错误不会追溯到任何特定的代码行,所以我猜测它与 psycopg2 或 django 的关系比代码本身更重要,但我不确定如何修复它。我正在使用 Python 2.7.17 和 Ubuntu 18.04.5。以下是完整的错误信息:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 83, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 52, in __init__
    self.build_graph()
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 210, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
    self.ensure_schema()
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/recorder.py", line 52, in ensure_schema
    if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 254, in cursor
    return self._cursor()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 229, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python2.7/dist-packages/psycopg2/__init__.py", line 127, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: fe_sendauth: no password supplied

再说一次,我对 Django 和 Postgres 很陌生,所以我可能遗漏了一些明显的东西。该代码同样可能无法在 Linux 上运行,或者其中存在一些未修复的错误。任何帮助将不胜感激。

【问题讨论】:

  • 您正在使用 DATABASES['default'] = dj_database_url.config() 覆盖 sqlite 设置。所以你必须看到这个:github.com/jacobian/dj-database-url/blob/…。所以这会让你的默认设置为{}
  • @VineetYadav 谢谢,我不认为这是一个外部包。我最终根据您的评论修复了它!

标签: python django postgresql python-2.7 psycopg2


【解决方案1】:

正如 Vineet 所指出的,DATABASES['default'] = dj_database_url.config() 行覆盖了配置,因此“密码”和其他属性存在并且为空白。我在它后面添加了这一行:

del DATABASES['default']['PASSWORD'], DATABASES['default']['HOST'], DATABASES['default']['PORT']

问题已经解决了。

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2014-08-21
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多