2

我在一个项目中介绍了 South。我遇到了麻烦,因为 South 需要 DROP 特权。我得到的错误:

(1142,“表 'ROLLBACK_TEST' 拒绝用户 '?????' 的 DROP 命令”)

在那之后,迁移似乎很无聊。我不得不删除我的数据库并重新创建它。

运行 South 命令时,使用“默认”Django 连接。因此,关联用户(也用于前端网站)需要具有 DROP 权限。对我来说,这似乎有点危险。有没有办法绕过这种可能不安全的方法?

4

1 回答 1

2

1)将您的复制settings.py到一个新文件south_settings.py,并删除除 DATABASES 键之外的所有内容。

2) 预先from settings import *导入现有settings.py密钥。

3) 编辑USERPASSWORD值以反映新创建的具有 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
于 2013-05-06T16:18:55.030 回答