python - Django: django.db.utils.InternalError: (1046, u'未选择数据库')

标签 python mysql django web-applications

我正在尝试将 Django 与 mariadb 10.4.8 一起使用 我的settings.py文件如下:

DATABASES = {
    'default': {
        'NAME:': 'mydb',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'staff',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '',
    }
}

init.py中:

import pymysql

pymysql.install_as_MySQLdb()

“./manage.py makemigrations”和“./manage.py migrate”产生相同的错误:

    File "./manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 83, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 52, in __init__
    self.build_graph()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 210, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
    self.ensure_schema()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-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 "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/base/introspection.py", line 55, in table_names
    return get_names(cursor)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/base/introspection.py", line 50, in get_names
    return sorted(ti.name for ti in self.get_table_list(cursor)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/mysql/introspection.py", line 56, in get_table_list
    cursor.execute("SHOW FULL TABLES")
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 101, in execute
    return self.cursor.execute(query, args)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/connections.py", line 517, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/connections.py", line 732, in _read_query_result
    result.read()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/connections.py", line 1075, in read
    first_packet = self.connection._read_packet()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/connections.py", line 684, in _read_packet
    packet.check_error()
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/home/ubuntu/wemu_app/wemu_app_env/local/lib/python2.7/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
django.db.utils.InternalError: (1046, u'No database selected')

在任何人询问之前,是的,我确信数据库存在并且用户拥有它的权限。我可以通过以下方式确认这一点:

mysql -u staff -r mydb

我正在使用此处找到的教程,以防有人好奇: https://www.digitalocean.com/community/tutorials/how-to-use-mysql-or-mariadb-with-your-django-application-on-ubuntu-14-04

有什么想法吗?我在这里撕扯我的头发。

最佳答案

您正在尝试使用 MySQL 后端引擎连接到 MariaDB

'ENGINE': 'django.db.backends.mysql',

Django 3.0 最近添加了对 MariaDB 的官方支持。不过它仍处于 Alpha 测试阶段。

https://docs.djangoproject.com/en/dev/releases/3.0/

我认为您最好使用 MySQL 数据库以避免进一步的问题。

关于python - Django: django.db.utils.InternalError: (1046, u'未选择数据库'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241115/

相关文章:

python - 在 Python 解释器中重新加载

python - 如何在电报机器人上发送照片

python - 不可散列类型 : 'list'

mysql - 如何根据光标的条件进行更新

python - Django教程: TypeError at/polls/3/vote/reverse() takes no keyword arguments

python - 在python中访问父命名空间

mysql - 计算具有特定条件的行并仍然显示所有行

mysql - 为什么使用 GROUP BY 会得到这个结果?

python - 无法将关键字 'username' 解析为字段。选项有 : city, ID、电话等

python - Django 在部署到 Elastic Beanstalk 时看不到环境变量