【问题标题】: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',
    }
}

我错过了什么?

【问题讨论】:

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

标签: python mysql django macos python-3.x


【解决方案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吗?
    猜你喜欢
    • 2014-04-09
    • 2017-01-20
    • 2011-10-16
    • 2017-02-05
    • 2013-06-28
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多