"Django 1.6.1 的本地配置在同步数据库时未应用"

2024-06-16 10:38:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以通过外壳正确地看到本地设置已正确应用。但是,当它与数据库同步时,我发现没有正确地应用它,就会发生错误。在

以下是主settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'kidsmamma',
        'USER': 'kidsmamma',
        'PASSWORD': 'kidsmamma@pass!@#$',
        'HOST': '',
        'PORT': '',
        'TEST_COLLATION': 'utf8_unicode_ci'
    }
}

. . .

# LOCAL SETTING
try:
    from local_settings import *
    print DATABASES
except ImportError:
    pass

这是local_settings.py

^{pr2}$

当我运行./manage.py shell时:

(kidsmamma)[09:04 오후 kidsmamma@dev-server ~/kidsmamma]$ ./manage.py shell
{'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'test_kidsmamma', 'test_COLLATION': 'utf8_unicode_ci', 'HOST': '', 'USER': 'test', 'PASSWORD': 'test@pass!@#$', 'PORT': ''}}
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 
keyboardInterrupt
>>> 

在执行./manage.py syncdb之后,错误如下所示:

(kidsmamma)[09:04 오후 kidsmamma@dev-server ~/kidsmamma]$ ./manage.py syncdb
{'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'test_kidsmamma', 'test_COLLATION': 'utf8_unicode_ci', 'HOST': '', 'USER': 'test', 'PASSWORD': 'test@pass!@#$', 'PORT': ''}}
Syncing...
Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/core/management/base.py", line 415, in handle
    return self.handle_noargs(**options)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/south/management/commands/syncdb.py", line 89, in handle_noargs
    db.connection_init() 
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/south/db/mysql.py", line 183, in connection_init
    cursor = self._get_connection().cursor()
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 157, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 129, in _cursor
    self.ensure_connection()
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 124, in ensure_connection
    self.connect()
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/utils.py", line 99, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 124, in ensure_connection
    self.connect()
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 112, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 435, in get_new_connection
    conn = Database.connect(**conn_params)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/home/kidsmamma/.virtualenvs/kidsmamma/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (1045, "Access denied for user 'kidsmamma'@'localhost' (using password: YES)")

如果我想在没有本地设置的情况下连接到数据库,没有问题,但是导入本地设置后会发生什么,我找不到原因。在

我使用的是django版本1.6.1。 如果您需要更多信息,请留言。 我希望你能帮助我!在


Tags: djangoinpyselfhomedbinitlib
1条回答
网友
1楼 · 发布于 2024-06-16 10:38:23

首先从MySQL客户端命令行连接到MySQL服务器:

$ mysql -u root -p

输入MySQL服务器的root用户的root密码,命令行提示符应更改为:

^{pr2}$

现在尝试列出所有当前数据库:

mysql> SHOW DATABASES;

并尝试通过以下方式列出mysql的所有用户:

mysql> SELECT User, Host FROM mysql.user;

现在考虑它们的输出,根据DATABASESlocal_settings.py设置,如果您的test用户不存在,请使用您的密码创建它:

mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test@pass!@#$';

如果您的test_kidsmamma数据库不存在,请创建它:

mysql> CREATE DATABASE test_kidsmamma  CHARACTER SET utf8;

然后将test_kidsmamma数据库的所有权限授予test用户:

mysql> GRANT ALL ON test_kidsmamma.* TO 'test'@'%';

好的,现在您可以再试一次python manage.py syncdb。在

请注意,您也可以尝试在settings.py中设置DATABASES

相关问题 更多 >