我在一个项目中介绍了南方。我遇到了麻烦,因为南方需要DROP特权。我得到的错误:
(1142,“DROP命令拒绝用户'?????'表'ROLLBACK_TEST'”)
之后,移民似乎变得僵硬了。我不得不放弃我的数据库并重新创建它。
运行South命令时,使用'default'Django连接。因此,关联用户(也用于前端网站)需要具有DROP权限。对我来说,这似乎有点危险。有没有办法解决这种可能不安全的方法?
答案 0 :(得分:2)
1)将settings.py
复制到新文件south_settings.py
,然后删除除DATABASES键以外的所有内容。
2)前置from settings import *
以导入现有的settings.py
个密钥。
3)编辑USER
和PASSWORD
值以反映具有DROP权限的新创建的SQL用户。
# south_settings.py
from settings import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django_db', # Or path to database file if using sqlite3.
'USER': 'username_with_drop_privileges', # Not used with sqlite3.
'PASSWORD': 'password_with_drop_privileges', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
您只需覆盖此新south_settings.py
中的DATABASES键值。
4)最后,使用python manage.py [command]
参数执行--settings=south_settings
。
python manage.py migrate [app] --settings=south_settings