django.db.utils.OperationalError: (1046, '未选择数据库')

Posted

技术标签:

【中文标题】django.db.utils.OperationalError: (1046, \'未选择数据库\')【英文标题】:django.db.utils.OperationalError: (1046, 'No database selected')django.db.utils.OperationalError: (1046, '未选择数据库') 【发布时间】:2016-03-24 11:41:20 【问题描述】:

遇到一个奇怪的错误。我在 mysql 中创建了一个数据库,将数据库设置为使用它。在我的 Django settings.py 中使用正确的设置。但是还是出现了没有选择数据库的错误。

我首先尝试:

python manage.py syncdb

得到这个回溯:

django.db.utils.OperationalError: (1046, 'No database selected')

settings.py:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'my_db',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    

我错过了什么?

【问题讨论】:

对于遇到“未选择数据库”的其他人,我的问题是设置键不正确。我使用的是“数据库”而不是“名称”。这里不是同样的问题,但似乎配置有任何问题只是返回没有选择数据库,所以要非常小心一切都是正确的。 【参考方案1】:

授予文件中提到的用户的访问权限

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

您无需授予所有权限。相应地修改。

【讨论】:

【参考方案2】:

检查以确保您的数据库 my_db 存在于您的 MySQL 实例中。登录 MySQL 并运行;

show databases;

确保 my_db 存在。如果没有,请运行

create database my_db;

【讨论】:

它存在。因此,我对这个错误感到非常困惑。我的连接器有问题吗? 尝试将主机更改为空字符串,看看是否可行。您也可以尝试将主机更改为 127.0.0.1。 主机改成127.0.0.1后同样的错误存在。 你的 settings.py 文件中还有什么?它只是数据库信息吗?有一些 django 命令已经提前运行,django 在数据库中创建了它需要的附加表。需要运行的一个命令是,python manage.py migrate 这真的是一个标准设置的夹层项目。我尝试过使用不同的命令,例如你写的python manage.py migratepython manage.py syncdb。真的很诡异,除了django.db.backends.mysql之外应该还有什么可以用mysqlclient 1.3.7吗?

以上是关于django.db.utils.OperationalError: (1046, '未选择数据库')的主要内容,如果未能解决你的问题,请参考以下文章