ubuntu에서 Django 연결 mysql 데이터베이스 오류 및 해결

17101 단어 ubuntu
오늘 시간이 있으면 또 Django의 학습을 시작하고 을 다운로드하여 제2장의 예에 따라 블로그의 작은 예를 준비했다.시작한 지 얼마 되지 않아 데이터베이스에 연결할 때부터 문제가 생겼을 줄은 몰랐다.나는 한 시간이 넘게 걸려서야 비로소 그것을 해결했다.그나저나 Django 웹 개발 안내서라는 책을 대충 훑어보니 제1장은python의 기본 지식을 다루는 데 6페이지에 가까운 0페이지가 있는데 이게 닭갈비구나.
책의 순서에 따라 먼저 항목을 만들다
django-admin startproject mysite


이후 개발 서버를 실행합니다. 이것은 Django가 자체로 가지고 있는 개발 기간에 사용되는 서버입니다
1 ./manage.py runserver

나중에 블로그 앱 만들기
./manage.py startapp blog

그리고 setting을 수정합니다.py 파일, INSTALLEDAPPS 모듈 마지막에'mysite.blog'.
다음에 모델스에서.py에서 디자인 모델
1 from django.db import models
2 class BlogPost(models.Model):
3 title = models.CharField(max_length = 150)
4 body = models.TextField()
5 timestamp = models.DateTimeField()

다음은 데이터베이스를 설정하는 것이다. 바로 내가 문제가 생긴 곳이다.Django는 mysql,PostgreSQL,Oracle 등 데이터베이스를 지원하고python에 SQLite를 간단하게 첨부합니다.나는 데이터베이스 설정을 하기 위해 mysql을 선택했다.
우선 setting을 수정합니다.py 파일, 데이터베이스 부분
 1 DATABASES = {
2 'default': {
3 'ENGINE': 'django.db.backends.mysql',
4 'NAME': 'mysql',
5 'USER': 'root',
6 'PASSWORD': 'fan',
7 'HOST': 'localhost',
8 'PORT': '',
9 }
10 }

이것은 최종 설정입니다. 이 정확한 결과입니다. 여기name는 반드시 데이터베이스 이름으로 설정해야 합니다. 틀리면 오류 메시지가 발생합니다. 제가 쓰기 시작한 것은djangodb입니다.
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1049, "Unknown database 'djangodb'")

처음에 내가 나타난 것은 아래의 잘못이다. 매우 길고 유용한 것은 마지막 오류 힌트이다.
root@Fan's PC:/home/fan/djangoProject/mysite# ./manage.py syncdb
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 67, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/pymodules/python2.7/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/lib/pymodules/python2.7/django/core/management/commands/syncdb.py", line 7, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/usr/lib/pymodules/python2.7/django/core/management/sql.py", line 6, in <module>
from django.db import models
File "/usr/lib/pymodules/python2.7/django/db/__init__.py", line 78, in <module>
connection = connections[DEFAULT_DB_ALIAS]
File "/usr/lib/pymodules/python2.7/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/usr/lib/pymodules/python2.7/django/db/utils.py", line 33, in load_backend
return import_module('.base', backend_name)
File "/usr/lib/pymodules/python2.7/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/lib/pymodules/python2.7/django/db/backends/mysql/base.py", line 14, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
root@Fan's PC:/home/fan/djangoProject/mysite# vi settings.py
root@Fan's PC:/home/fan/djangoProject/mysite# ./manage.py syncdb
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 67, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/pymodules/python2.7/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/lib/pymodules/python2.7/django/core/management/commands/syncdb.py", line 7, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/usr/lib/pymodules/python2.7/django/core/management/sql.py", line 6, in <module>
from django.db import models
File "/usr/lib/pymodules/python2.7/django/db/__init__.py", line 78, in <module>
connection = connections[DEFAULT_DB_ALIAS]
File "/usr/lib/pymodules/python2.7/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/usr/lib/pymodules/python2.7/django/db/utils.py", line 33, in load_backend
return import_module('.base', backend_name)
File "/usr/lib/pymodules/python2.7/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/lib/pymodules/python2.7/django/db/backends/mysql/base.py", line 14, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

마지막 힌트는 No module named MYSQLdb입니다. 즉, mysql과 연결되지 않았습니다.나는 mysql에 들어가려고 시도했는데, 왠지 모르게 계속 유사한 것이 나타났다
error:'Access denied for user'root'@'localhost'(using password: NO)'오류입니다.비밀번호 때문일 것 같아서요. 몰라요. 시간이 촉박해서 mysql를 다시 설치하려고 했어요.
ubuntu에서 먼저 마운트 해제하고 설치하십시오. 명령은 다음과 같습니다.
1   
2 sudo apt-get autoremove --purge mysql-server
3 sudo apt-get remove mysql-common //
4
5 sudo apt-get install mysql-server
6 sudo apt-get install mysql-client

설치하는 과정에서 mysql 루트 사용자의 비밀번호를 설정하는 대화상자가 팝업됩니다.
하지만 다시 설치한 뒤에는 성공하지 못했다.자료를 찾은 후python-mysql의 트리거, 즉python-mysqldb를 설치해야 한다는 것을 발견하였다
apt-get install python-mysqldb

설치가 끝난 후에 나는 다시 테스트를 진행하여 마침내 성공하였다.
root@Fan's PC:/home/fan/djangoProject/mysite# ./manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table blog_blogpost

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'root'): ***
E-mail address: ******@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
No fixtures found.

총괄적으로 말하면 이런 문제를 일으키는 것은 사실 매우 간단하다. 바로 mysql 데이터베이스와django의 설정 두 가지 측면,setting이다.py 파일을 잘못 쓸 수 없습니다. 또한python-mysqldb를 설치해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다.

좋은 웹페이지 즐겨찾기