我在一个项目中介绍了 South。我遇到了麻烦,因为 South 需要 DROP 特权。我得到的错误:
(1142,“表 'ROLLBACK_TEST' 拒绝用户 '?????' 的 DROP 命令”)
在那之后,迁移似乎很无聊。我不得不删除我的数据库并重新创建它。
运行 South 命令时,使用“默认”Django 连接。因此,关联用户(也用于前端网站)需要具有 DROP 权限。对我来说,这似乎有点危险。有没有办法绕过这种可能不安全的方法?
我在一个项目中介绍了 South。我遇到了麻烦,因为 South 需要 DROP 特权。我得到的错误:
(1142,“表 'ROLLBACK_TEST' 拒绝用户 '?????' 的 DROP 命令”)
在那之后,迁移似乎很无聊。我不得不删除我的数据库并重新创建它。
运行 South 命令时,使用“默认”Django 连接。因此,关联用户(也用于前端网站)需要具有 DROP 权限。对我来说,这似乎有点危险。有没有办法绕过这种可能不安全的方法?
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.
}
}
您只需覆盖这个新的 DATABASES 键值south_settings.py
。
4) 最后,python manage.py [command]
使用--settings=south_settings
参数执行。
python manage.py migrate [app] --settings=south_settings