Python Django教程51044拒绝用户@'访问;本地主机';数据库错误
我正在编写教程5,我尝试运行了一个测试:Python Django教程51044拒绝用户@'访问;本地主机';数据库错误,python,django,Python,Django,我正在编写教程5,我尝试运行了一个测试: $ python manage.py test polls Creating test database for alias 'default'... Got an error creating the test database: (1044, "Access denied for user 'myprojectuser'@'localhost' to database 'test_myproject'") Type 'yes' if you woul
$ python manage.py test polls
Creating test database for alias 'default'...
Got an error creating the test database: (1044, "Access denied for user 'myprojectuser'@'localhost' to database 'test_myproject'")
Type 'yes' if you would like to try deleting the test database 'test_myproject', or 'no' to cancel: yes
Destroying old test database for alias 'default'...
Got an error recreating the test database: (1044, "Access denied for user 'myprojectuser'@'localhost' to database 'test_myproject'")
我试过在settings.py中提到test_名称
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
'TEST_NAME': 'test_database_myprojecttest',
}
}
我还运行了“将test_myproject上的所有特权授予'myprojectuser'@'localhost';
”和
上面的两个查询命令是在设置数据库时运行的
还是一样的错误。我应该怎么做?测试数据库的名称是通过在名称中指定的数据库名称中添加“test”来形成的 如果您使用的是Django<1.7,则:
'TEST_NAME': 'test_myproject',
如果您使用的是Django>=1.7:那么您应该在设置中使用TEST作为字典:
'TEST' : {
'NAME': 'test_myproject',
}
目前您有:
'TEST_NAME': 'test_database_myprojecttest',
但是,只有在“设置”中指定的测试数据库名称与默认名称“test_yourDbName”不同时,才应指定该名称
如果这没有帮助,那么您可以切换到Sqlite引擎。使用Sqlite,测试数据库应该在内存中创建,而不需要访问真实的数据库 尝试向SQL查询中添加。*以包含表:
GRANT ALL PRIVILEGES ON test_myproject.* TO 'myprojectuser'@'localhost' IDENTIFIED BY 'password';
设置已运行的数据库时:
CREATE USER 'myprojectuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myproject TO 'myprojectuser'@'localhost';
这意味着您的用户无法访问其他数据库。
然而,测试正在尝试创建自己的数据库“test_myproject”(根据您的错误文本)。因此,在创建用户myprojectuser之后,还必须授予该数据库的权限。只需在数据库控制台中运行以下命令:
GRANT ALL PRIVILEGES ON test_myproject TO 'myprojectuser'@'localhost';
FLUSH PRIVILEGES;
您使用的是哪个django版本?您是在本地使用它还是在Heroku…使用命令创建项目?
GRANT ALL PRIVILEGES ON test_myproject TO 'myprojectuser'@'localhost';
FLUSH PRIVILEGES;