ubuntu에서 Django 연결 mysql 데이터베이스 오류 및 해결
17101 단어 ubuntu
책의 순서에 따라 먼저 항목을 만들다
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를 설치해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ubuntu 22.04에 캐디 설치 - HostnExtra이 기사에서는 Ubuntu 22.04에 Caddy를 설치하는 방법을 설명합니다. 이 문서는 설치 프로세스를 안내하고 웹 사이트를 호스팅합니다. Caddy 웹 서버는 Go로 작성된 오픈 소스 웹 서버입니다. Ubunt...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.